ОБЪЕКТНО ОРИЕНТИРОВАННОЕ...

26
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Сыктывкарский лесной институт (филиал) федерального государственного бюджетного образовательного учреждения высшего профессионального образования «Санкт-Петербургский государственный лесотехнический университет имени С. М. Кирова» Кафедра информационных систем ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ Учебно-методический комплекс по дисциплине для студентов специальности 230201 "Информационные системы и технологии" всех форм обучения Самостоятельное учебное электронное издание Сыктывкар 2012

Upload: others

Post on 10-Jul-2020

30 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Сыктывкарский лесной институт (филиал) федерального государственного бюджетного

образовательного учреждения высшего профессионального образования «Санкт-Петербургский государственный лесотехнический университет

имени С. М. Кирова»

Кафедра информационных систем

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

Учебно-методический комплекс по дисциплине

для студентов специальности 230201 "Информационные системы и технологии"

всех форм обучения

Самостоятельное учебное электронное издание

Сыктывкар 2012

Page 2: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

2

УДК 004.4 ББК 32.973.26-018 О-29

Рекомендован к изданию в электронном виде кафедрой информационных систем Сыктывкарского лесного института

Утвержден к изданию в электронном виде советом технологического факультета

Сыктывкарского лесного института

Со с т а ви т е л ь : Камалова Л. Р., преподаватель

Ответственный редактор:

Лавреш И. И., к.т.н., заведующий кафедрой информационные системы

О-29

Объектно-ориентированное программирование [Электронный ресурс] : учеб.-метод. комплекс по дисциплине для студентов специ-альности 230201 "Информационные системы и технологии" всех форм обучения : самост. учеб. электрон. изд. / Сыкт. лесн. ин-т ; сост.: Л. Р. Камалова. – Электрон. дан. – Сыктывкар : СЛИ, 2012. – Режим доступа: http://lib.sfi.komi.com. – Загл. с экрана.

В издании помещены материалы для освоения дисциплины «Объ-

ектно-ориентированное программирование». Приведены рабочая про-грамма курса, методические указания по различным видам работ.

УДК 004.4

ББК 32.973.26-018

______________________________________________________________________________________________

Самостоятельное учебное электронное издание

Составитель: Камалова Ляйсан Рафиковна

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

Электронный формат – pdf. Объем 0,9 уч.-изд. л. Сыктывкарский лесной институт (филиал) федерального государственного бюджетного

образовательного учреждения высшего профессионального образования «Санкт-Петербургский государственный лесотехнический университет

имени С. М. Кирова» (СЛИ), 167982, г. Сыктывкар, ул. Ленина, 39, [email protected], www.sli.komi.com

Редакционно-издательский отдел СЛИ.

© СЛИ, 2012

Камалова Л. Р., составление, 2012

Page 3: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

3

ОГЛАВЛЕНИЕ

1. ВЫПИСКА ИЗ ГОСУДАРСТВЕННОГО ОБРАЗОВАТЕЛЬНОГО СТАНДАРТА СПЕЦИАЛЬНОСТИ ....................................................................................................................... 4

2. ВЫПИСКА ИЗ ФГОС С ТРЕБОВАНИЯМИ ПО ДИСЦИПЛИНЕ ....................................... 4

3. РАБОЧАЯ ПРОГРАММА ......................................................................................................... 5

4. УЧЕБНО-МЕТОДИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ ...................................... 14

5. МАТЕРИАЛЬНО-ТЕХНИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ ............................ 14

6. МЕТОДИЧЕСКИЕ УКАЗАНИЯ СТУДЕНТАМ ПО САМОСТОЯТЕЛЬНОМУ ИЗУЧЕНИЮ ДИСЦИПЛИНЫ .................................................................................................... 15

7. МАТЕРИАЛЫ ДЛЯ КОНТРОЛЯ ЗНАНИЙ СТУДЕНТОВ ................................................. 17

8. МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ВЫПОЛНЕНИЮ ЛАБОРАТОРНЫХ РАБОТ............ 18

Лабораторная работа №1 .............................................................................................................. 19

Лабораторная работа №2 .............................................................................................................. 20

Лабораторная работа №3 .............................................................................................................. 20

Лабораторная работа №4 .............................................................................................................. 21

Лабораторная работа №5 .............................................................................................................. 22

Лабораторная работа №6 .............................................................................................................. 23

Лабораторная работа №7 .............................................................................................................. 24

Лабораторная работа №8 .............................................................................................................. 24

Лабораторная работа №9 .............................................................................................................. 25

Page 4: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

4

1. ВЫПИСКА ИЗ ГОСУДАРСТВЕННОГО ОБРАЗОВАТЕЛЬНОГО СТАНДАРТА СПЕЦИАЛЬНОСТИ

1.1. Общие требования к основной образовательной программе

1.1.1. Основная образовательная программа подготовки инженера разрабатывается на основании настоящего государственного образовательного стандарта и включает в себя учебный план, программы учебных дисциплин, программы учебных и производственных практик.

1.1.2. Требования к обязательному минимуму содержания основной образователь-ной программы подготовки инженера, к условиям ее реализации и срокам ее освоения определяются настоящим государственным образовательным стан-дартом.

1.1.3. Основная образовательная программа подготовки инженера состоит из дис-циплин федерального компонента, дисциплин национально-регионального (ву-зовского) компонента, дисциплин по выбору студента, а также факультативных дисциплин. Дисциплины вузовского компонента и по выбору студента в каж-дом цикле должны содержательно дополнять дисциплины, указанные в феде-ральном компоненте цикла.

1.1.4. Основная образовательная программа подготовки инженера должна преду-сматривать изучение студентом следующих циклов дисциплин:

- цикл ГСЭ – Общие гуманитарные и социально-экономические дисциплины; - цикл ЕН – Общие математические и естественнонаучные дисциплины; - цикл ОПД – Общепрофессиональные дисциплины; - цикл СД – Специальные дисциплины, включая дисциплины специализации; - ФТД – Факультативные дисциплины.

1.1.5. Содержание национально-регионального компонента основной образователь-ной программы подготовки инженера должно обеспечивать подготовку выпу-скника в соответствии с квалификационной характеристикой, установленной настоящим государственным образовательным стандартом.

2. ВЫПИСКА ИЗ ФГОС С ТРЕБОВАНИЯМИ ПО ДИСЦИПЛИНЕ

Дополнение к нормам государственного стандарта Знакомство с методологиями программирования. Использование указателей и ссылок как средства повышения эффективности программ. Перегрузка операторов. Механизм вирту-альных функций.

Page 5: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

5

3. РАБОЧАЯ ПРОГРАММА

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Сыктывкарский лесной институт (филиал) федерального государственного бюджетного образовательного

учреждения высшего профессионального образования «Санкт-Петербургский государственный

лесотехнический университет имени С. М. Кирова» (СЛИ)

СОГЛАСОВАНО Декан технологического факультета ___________________А.А. Самородницкий "_____"_______________2012 г.

УТВЕРЖДАЮ Зам. директора по учебной и научной работе ___________________Л.А. Гурьева "_____"________________2012 г.

РАБОЧАЯ ПРОГРАММА

По дисциплине “Объектно-ориентированное программирование” Обязательная

Для направления подготовки дипломированного специалиста

230000 "Информатика и вычислительная техника" специальности 230201 "Информационные системы и технологии"

Кафедра информационных систем О В/О З/О Д/С З/С Курс 4 4 4 5 6 Семестр 7 8 7 9 12 Всего часов 68 68 68 68 68 В том числе аудиторных: Из них: Лекции

Лабораторные Контрольная раб.

34 16 18 1

20 10 10 1

8 4 4 1

34 16 18 1

8 4 4 1

Самостоятельная работа 34 48 60 34 60 Зачет 7 с

4 к 8 с 4 к

7 с 4 к

9с 5к

12с 6к

Сыктывкар 2012

Page 6: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

6

Рабочая программа составлена в соответствии с Государственным образова-тельным стандартом высшего профессионального образования для подготовки дипломированного специалиста по направлению подготовки 230000 "Инфор-матика и вычислительная техника" специальности 230201 "Информационные системы и технологии" Программу составил: Л. Р. Камалова, преподаватель Переработанная учебная программа обсуждена на заседании кафедры Инфор-мационных систем Протокол № 9 от 11.05.2012 Заведующий кафедрой _____________И. И. Лавреш Учебная программа рассмотрена и одобрена методической комиссией техно-логического факультета. Протокол № ____ от _________ 20 г. Председатель комиссии: _____________А. А Самородницкий

Библиографический список рабочей программы полностью соответствует сведениям книгообеспеченности образовательного процесса СЛИ

______________И. И. Лавреш

Page 7: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

7

1. Цели и задачи дисциплины, ее место в учебном процессе 1.1. Цель преподавания дисциплины

Цель изучения дисциплины “Объектно-ориентированное программирование” за-ключается в ознакомлении студентов с основными понятиями и принципами объектно-ориентированного программирования с целью приобретения теоретических и практиче-ских знаний по проектированию и разработке информационных систем с использованием объектно-ориентированных методов.

1.2. Задачи изучения дисциплины Задача изучения дисциплины состоит в том, чтобы студенты овладели основами

теоретических и практических знаний в области объектно-ориентированного программиро-вания и способами применения объектно-ориентированных методов в процессе проектиро-вания и разработки информационных систем. В результате изучения дисциплины студент должен:

• ЗНАТЬ • принципы и этапы объектно-ориентированного программирования; • понятие класса, принципы доступа к данным и методам классов, правила объ-

явления классов; • понятие перегрузки функций и операторов; • понятие одиночного и множественного наследования.

• УМЕТЬ • реализовывать классы, объявлять закрытые и открытые данные и методы, ис-

пользовать стандартные и пользовательские конструкторы и деструкторы; • программно реализовывать перегрузку функций, конструкторов, префиксных

и постфиксных операторов, бинарных операторов; • программно реализовывать одиночное и множественное наследование.

• БЫТЬ ОЗНАКОМЛЕНЫ С: • использованием программного продукта MS Visual C++; • методами реализации классов и возможностями повышения эффективности программ средствами объектно-ориентированного программирования.

1.3. Перечень дисциплин и тем, усвоение которых студентами необходимо для изучения данной дисциплины

Для усвоения дисциплины “Объектно-ориентированное программирование” студен-ты должны иметь прочные знания по технологии программирования, информационным технологиям.

1.4. Дополнение к нормам государственного стандарта

Знакомство с методологиями программирования. Использование указателей и ссы-лок как средства повышения эффективности программ. Перегрузка операторов. Механизм виртуальных функций.

2. Содержание дисциплины 2.1. Наименование тем, их содержание, объем в часах лекционных занятий

2.1.1. Дневное отделение, дневное сокращенное отделение 1. Методологии программирования (2 часа)

Структурное программирование. Цели и принципы структурного программирования. Концепция модульного программирования.

Page 8: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

8

Объектно-ориентированное программирование. Понятие объекта. Принципы объект-но-ориентированного программирования: инкапсуляция, наследование, полиморфизм. Эта-пы объектно-ориентированного программирования. Достоинства и недостатки объектно-ориентированного программирования.

2. Объектно-ориентированные возможности языка программирования C++ (4 часа)

Понятие класса. Доступ к данным и методам классов. Закрытые и открытые данные и методы классов. Конструкторы и деструкторы.

Реализация методов класса. Постоянные функции. Объявление и реализация классов.

3. Работа с указателями и ссылками (2 часа) Понятие указателя. Объявление указателей. Цели использования указателей. Операто-

ры для работы с указателями. Понятие ссылки. Объявление ссылок. Указатель this. Паразитные указатели. Возвращение функцией нескольких значений. Передача ссылок как средство повыше-

ния эффективности программ.

4. Перегрузка функций и операторов (4 часа) Перегрузка функций. Перегрузка конструкторов. Конструктор копий. Перегрузка операторов. Перегружаемые операторы. Перегрузка префиксных и пост-

фиксных операторов. Перегрузка бинарных операторов.

5. Наследование. Виртуальные функции (4 часа) Понятие наследования. Наследование конструкторов и деструкторов. Переопределение функций в производных классах. Сокрытие методов базового клас-

са. Виртуальные функции. Одиночное наследование. Множественное наследование. Виртуальное множественное

наследование. Абстрактные типы данных.

Всего часов: 16 2.1.2. Вечернее отделение 1. Методологии программирования. Объектно-ориентированные возможности языка про-граммирования C++. (4 часа)

Объектно-ориентированное программирование. Понятие объекта. Принципы объект-но-ориентированного программирования: инкапсуляция, наследование, полиморфизм. Эта-пы объектно-ориентированного программирования. Достоинства и недостатки объектно-ориентированного программирования.

Понятие класса. Доступ к данным и методам классов. Закрытые и открытые данные и методы классов. Конструкторы и деструкторы.

Реализация методов класса. Постоянные функции. Объявление и реализация классов.

2. Работа с указателями и ссылками. Перегрузка функций и операторов (4 часа) Понятие указателя. Объявление указателей. Цели использования указателей. Операто-

ры для работы с указателями. Понятие ссылки. Объявление ссылок. Указатель this. Паразитные указатели.

Page 9: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

9

Перегрузка функций. Перегрузка конструкторов. Конструктор копий. Перегрузка операторов. Перегружаемые операторы. Перегрузка префиксных и пост-

фиксных операторов. Перегрузка бинарных операторов.

3. Наследование. Виртуальные функции (2 часа) Понятие наследования. Наследование конструкторов и деструкторов. Переопределение функций в производных классах. Сокрытие методов базового клас-

са. Виртуальные функции. Одиночное наследование. Множественное наследование. Виртуальное множественное

наследование. Абстрактные типы данных.

Всего часов: 10 2.1.3. Заочное отделение, заочное сокращенное отделение 1. Объектно-ориентированные возможности языка программирования C++. Работа с указателями и ссылками (2 часа)

Объектно-ориентированное программирование. Понятие объекта. Принципы объект-но-ориентированного программирования: инкапсуляция, наследование, полиморфизм. Эта-пы объектно-ориентированного программирования.

Понятие класса. Доступ к данным и методам классов. Закрытые и открытые данные и методы классов. Конструкторы и деструкторы.

Объявление и реализация классов. Понятие указателя. Объявление указателей. Цели использования указателей. Операто-

ры для работы с указателями. Понятие ссылки. Объявление ссылок.

2. Перегрузка функций и операторов. Наследование Перегрузка функций. Перегрузка конструкторов. Перегрузка операторов. Перегру-

жаемые операторы. Перегрузка префиксных и постфиксных операторов. Перегрузка бинар-ных операторов.

Понятие наследования. Наследование конструкторов и деструкторов. Переопределение функций в производных классах. Виртуальные функции. Одиночное наследование. Множественное наследование.

Всего часов: 4

2.2. Лабораторные занятия, их наименование, краткое содержание и объем в часах

2.2.1. Дневное отделение, дневное сокращенное отделение № Название лабораторной работы часы

ЛР-1 Знакомство с языком программирования C++. Работа с арифметическими операторами. Условный оператор. Использование рекурсии.

2

ЛР-2 Реализация классов. Конструкторы и деструкторы. 2 ЛР-3 Работа с указателями. Использование указателя this. 2 ЛР-4 Работа со ссылками. Передача объекта по ссылке с помощью указателя. 2

Page 10: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

10

Передача постоянного указателя. ЛР-5 Перегрузка функций. Перегрузка конструкторов. Перегрузка операторов. 2 ЛР-6 Перегрузка префиксного и постфиксного оператора. Перегрузка бинарно-

го оператора. 2

ЛР-7 Простое наследование. Перегрузка конструкторов в производных классах. Отсечение данных.

2

ЛР-8 Одиночное наследование. Операция переноса вниз. Операция приведения вверх.

2

ЛР-9 Множественное наследование. 2 Всего: 18

2.2.2. Вечернее отделение № Название лабораторной работы часы

ЛР-1 Знакомство с языком программирования C++. Реализация классов. Конст-рукторы и деструкторы.

2

ЛР-2 Работа с указателями. Использование указателя this. Перегрузка функций. Перегрузка конструкторов. Перегрузка операторов.

2

ЛР-3 Перегрузка функций. Перегрузка конструкторов. Перегрузка префиксного и постфиксного оператора.

2

ЛР-4 Перегрузка бинарного оператора. Простое наследование. Перегрузка кон-структоров в производных классах. Отсечение данных.

2

ЛР-5 Множественное наследование. 2 Всего: 10

2.2.3. Заочное отделение, заочное сокращенное отделение № Название лабораторной работы часы

ЛР-1 Знакомство с языком программирования C++. Реализация классов. Конст-рукторы и деструкторы. Работа с указателями и ссылками.

2

ЛР-2 Перегрузка функций. Перегрузка конструкторов. Перегрузка бинарного оператора. Одиночное наследование.

2

Всего: 4

2.3. Самостоятельная работа и контроль успеваемости Самостоятельная работа студента по видам учебных занятий распределяется сле-

дующим образом: • проработка лекционного материала по конспекту и учебной литературе; • подготовка к лабораторным занятиям.

Текущая успеваемость студентов контролируется опросами по результатам выпол-нения лабораторных работ и проведением контрольной работы. Итоговая успеваемость оп-ределяется на зачете.

Page 11: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

11

2.3.1. Дневное отделение, дневное сокращенное отделение

Вид самостоятельной работы Число часов

Вид контро-ля успевае-

мости 1. Проработка лекционного материала по конспекту, учебной литературе и специализированным ресурсам Internet

8 КР Зачет – 7 се-местр

2. Подготовка к практическим занятиям 8 КО, КР 3. Изучение учебной и научной литературы, статей в периоди-ческой печати, поиск информации в Интернет

2 КО, КР

4. Подготовка к промежуточной аттестации 8 КО, КР 5. Подготовка к зачету 8 Зачет – 7 се-

местр Всего часов 34

2.3.2. Вечернее отделение

Вид самостоятельной работы Число часов

Вид контроля успеваемости

1. Проработка лекционного материала по конспекту, учебной литературе и специализированным ресурсам Internet

16 КР Зачет – 8 се-местр

2. Подготовка к практическим занятиям 10 КО, КР

3. Изучение учебной и научной литературы, статей в периоди-ческой печати, поиск информации в Интернет

4 КО, КР

6. Изучение тем, не рассмотренных на лекциях 8 КО, КР

7. Подготовка к зачету 10 Зачет – 8 се-местр

Всего часов 48

2.3.3. Заочное отделение, заочное сокращенное отделение

Вид самостоятельной работы Число часов

Вид контроля успеваемости

1. Проработка лекционного материала по кон-спекту, учебной литературе и специализирован-ным ресурсам Internet

8 КР Зачет – 7 семестр

2. Подготовка к практическим занятиям 16 КО, КР

3. Изучение учебной и научной литературы, ста-тей в периодической печати, поиск информации в Интернет

8 КО, КР

6. Изучение тем, не рассмотренных на лекциях 16 КО, КР

7. Подготовка к зачету 12 Зачет – 7 семестр

Всего часов 60

Page 12: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

12

2.4. Распределение часов по темам и видам занятий

2.4.1. Дневное отделение, дневное сокращенное отделение

№ и наименование Объем работы студента Форма кон-троля успе-ваемости

Темы дисциплины Лекции Лабор. зан.

Практ. зан.

Самост. раб.

Всего

1. Методологии програм-мирования

2 0 - 2 4 КО, КР

2. Объектно-ориентированные возмож-ности языка программиро-вания C++

4 4 - 8 16 КО, КР

3. Работа с указателями и ссылками

2 4 - 4 10 КО, КР

4. Перегрузка функций и операторов

4 4 - 8 16 КО, КР

5. Наследование. Вирту-альные функции

4 6 - 4 14 КО, КР

6. Подготовка к КР, КО 0 0 - 4 4 КР 7. Подготовка к зачету 0 0 - 4 4 Зачет Всего: 16 18 - 34 68 2.4.2. Вечернее отделение

№ и наименование Объем работы студента Форма кон-троля успе-ваемости

Темы дисциплины Лекции Лабор. зан.

Практ. зан.

Самост. раб.

Всего

1. . Методологии програм-мирования. Объектно-ориентированные возмож-ности языка программиро-вания C++

4 4 - 16 24 КО, КР

2. Работа с указателями и ссылками. Перегрузка функций и операторов

4 4 - 16 24 КО, КР

3. Наследование. Вирту-альные функции

2 2 - 4 8 КО, КР

4. Подготовка к КР, КО 0 0 c- 6 6 КР 5. Подготовка к зачету 0 0 - 6 6 Зачет Всего: 10 10 - 48 68 2.4.3. Заочное отделение, заочное сокращенное отделение

Page 13: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

13

№ и наименование Объем работы студента Форма кон-

троля успе-ваемости

Темы дисциплины Лекции Лабор. зан.

Практ. зан.

Самост. раб.

Всего

1. Объектно-ориентированные возмож-ности языка программиро-вания C++. Работа с ука-зателями и ссылками

2 2 - 20 24 КО, КР

2. Перегрузка функций и операторов. Наследование

2 2 - 16 20 КО, КР

3. Подготовка к КР, КО 0 0 - 16 16 КР 4. Подготовка к зачету 0 0 - 8 8 Зачет Всего: 4 4 - 60 68

Page 14: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

14

4. УЧЕБНО-МЕТОДИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ

Основная учебная литература

1. Павловская, Т. А. C/C ++. Программирование на языке высокого уровня [Текст] : учеб. для студ. вузов, обучающихся по направлению "Информатика и вычислитель-ная техника" / Т. А. Павловская. – Санкт-Петербург : Питер, 2003. – 460 с. – (Учеб-ник для вузов).

Дополнительная учебная, учебно-методическая литература 1. Подбельский, В. В. Язык СИ++ [Текст] : учеб. пособие для студ. вузов, обучающихся

по направлениям "Прикл. математика" и "Вычислительные машины, комплексы, системы и сети" / В. В. Подбельский. – 5-е изд. – Москва : Финансы и статистика, 2003. – 560 с.

Дополнительная литература

1. Борковский, А. Б. Словарь по программированию (английский, русский, немецкий, французский) [Текст] : около 5 000 терминов / А. Б. Борковский, Б. И. Зайчик, Л. И. Боровикова. – Москва : Рус. яз., 1991. – 286 с.

2. Дейтел, Х. М. Как программировать на С++ [Текст] : к изучению дисциплины / Х. М. Дейтел, П. Дж. Дейтел ; пер. с англ. ; под ред. В. Г. Кузьменко. – 3-е изд. – Москва : БИНОМ, 2003. – 1152 с.

3. Шилдт Г. Самоучитель C++ – 3 –е издание дополненное. – СПб.: БХВ – Петербург, 2002. – 688 с.

5. МАТЕРИАЛЬНО-ТЕХНИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ

1. Компьютерный класс (10 -15 рабочих мест). Лабораторные группы по количеству сту-дентов не должны превышать количество компьютеров в классе. 2. Программный продукт «Microsoft Visual C++» на каждом рабочем месте (либо в виде са-мостоятельного продукта, либо в составе «Microsoft Visual Studio»).

Page 15: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

15

6. МЕТОДИЧЕСКИЕ УКАЗАНИЯ СТУДЕНТАМ ПО САМОСТОЯТЕЛЬНОМУ ИЗУЧЕНИЮ ДИСЦИПЛИНЫ

6.1. Методические указания по самостоятельному изучению лекций Самостоятельная работа студентов по изучению отдельных тем дисциплины включает по-иск учебных пособий по данному материалу, проработку и анализ теоретического материа-ла, самоконтроль знаний по данной теме с помощью нижеприведенных контрольных во-просов и заданий. 1. Методологии программирования (2 часа)

Структурное программирование. Цели и принципы структурного программирования. Концепция модульного программирования. Объектно-ориентированное программирование. Понятие объекта. Принципы объект-

но-ориентированного программирования: инкапсуляция, наследование, полиморфизм. Эта-пы объектно-ориентированного программирования. Достоинства и недостатки объектно-ориентированного программирования.

2. Объектно-ориентированные возможности языка программирования C++ (4 часа)

Понятие класса. Доступ к данным и методам классов. Закрытые и открытые данные и методы классов. Конструкторы и деструкторы.

Реализация методов класса. Постоянные функции. Объявление и реализация классов.

3. Работа с указателями и ссылками (2 часа) Понятие указателя. Объявление указателей. Цели использования указателей. Операто-

ры для работы с указателями. Понятие ссылки. Объявление ссылок. Указатель this. Паразитные указатели. Возвращение функцией нескольких значений. Передача ссылок как средство повыше-

ния эффективности программ.

4. Перегрузка функций и операторов (4 часа) Перегрузка функций. Перегрузка конструкторов. Конструктор копий. Перегрузка операторов. Перегружаемые операторы. Перегрузка префиксных и пост-

фиксных операторов. Перегрузка бинарных операторов.

5. Наследование. Виртуальные функции (4 часа) Понятие наследования. Наследование конструкторов и деструкторов. Переопределение функций в производных классах. Сокрытие методов базового клас-

са. Виртуальные функции. Одиночное наследование. Множественное наследование. Виртуальное множественное

наследование. Абстрактные типы данных.

6.2. Методические рекомендации по самостоятельной подготовке к

лабораторным работам

Page 16: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

16

Самостоятельная работа студентов по подготовке к лабораторным работам, оформлению отчетов и защите лабораторных работ включает проработку и анализ теоретического мате-риала, описание проделанной экспериментальной работы с приложением таблиц, запросов, а и также самоконтроль знаний по теме лабораторной работы с помощью нижеприведен-ных контрольных вопросов и заданий.

Page 17: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

17

7. МАТЕРИАЛЫ ДЛЯ КОНТРОЛЯ ЗНАНИЙ СТУДЕНТОВ

7.1. Промежуточный контроль

Текущая успеваемость студентов контролируется выполнением, оформлением и

защитой отчетов по лабораторным работам, промежуточной аттестацией в виде контрольной работы. Контрольные вопросы для аттестации включают: теоретический материал, пройденный на лекциях, практический материал по лабораторным работам.

7.2. Итоговый контроль

Вопросы к зачету 1. Цели и принципы структурного программирования. 2. Концепция модульного программирования. 3. Принципы объектно-ориентированного программирования: инкапсуляция, наследование. 4. Принципы объектно-ориентированного программирования: полиморфизм. 5. Этапы объектно-ориентированного программирования. Достоинства и недостатки объ-ектно-ориентированного программирования. 6. Понятие класса. Понятие объекта. 7. Доступ к данным и методам классов. Закрытые и открытые данные и методы классов. 8. Конструкторы и деструкторы. 9. Реализация методов класса. Постоянные функции. 10. Понятие указателя. Объявление указателей. Цели использования указателей. Операторы для работы с указателями. 11. Понятие ссылки. Объявление ссылок. 12. Указатель this. 13. Паразитные указатели. 14. Возвращение функцией нескольких значений. 15. Передача ссылок как средство повышения эффективности программ. 16. Перегрузка функций. 17. Перегрузка конструкторов. 18. Перегружаемые операторы. Перегрузка префиксных операторов. 19. Перегружаемые операторы. Перегрузка постфиксных операторов. 20. Перегружаемые операторы. Перегрузка бинарных операторов. 21. Понятие наследования. 22. Наследование конструкторов и деструкторов. Переопределение функций в производных классах. 24. Сокрытие методов базового класса. 25. Виртуальные функции. 26. Одиночное наследование. 27. Множественное наследование. 28. Виртуальное множественное наследование.

7.3. Критерии оценки знаний студентов

Оценка "отлично" выставляется студенту за:

Page 18: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

18

а) глубокое усвоение материала по всем разделам курса, изложение его на высоком научно-техническом уровне. б) ознакомление с дополнительной литературой и передовыми программными достиже-ниями в области объектно-ориентированного программирования; в) умелое применение теоретических знаний при решении практических задач.

Оценка "хорошо" выставляется студенту за:

а) полное усвоение программного материала в объеме обязательной литературы по курсу; б) владение терминологией и символикой изучаемой дисциплины при изложении материа-ла: в) умение увязывать теоретические знания с решением практических задач; г) наличие не искажающих существа ответа погрешностей и пробелов при изложении мате-риала.

Оценка "удовлетворительно" выставляется студенту за: а) знание основных теоретических и практических вопросов программного материала; б) допущение незначительных ошибок и неточностей, нарушение логической последова-тельности изложения материала, недостаточную аргументацию теоретических положений.

Оценка "неудовлетворительно" выставляется студенту за: а) существенные пробелы в знаниях основного программного материала. б) недостаточный объем знаний по дисциплине для дальнейшей учебы и профессиональной деятельности.

8. МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ВЫПОЛНЕНИЮ ЛАБОРАТОРНЫХ РАБОТ

Общая цель и задачи выполнения работ Освоение студентами фундаментальных знаний в области теории объектно-

ориентированного программирования и выработка практических навыков применения этих знаний:

• Объявление и реализация классов; • Осуществление доступа к данным и методам классов; • Объявление и реализация пользовательского конструктора и деструктора; • Объявление и реализация методов класса; • Умение реализовывать одиночное и множественное наследование; • Использование указателя this; • Использование ссылок; • Осуществление переопределения методов базового класса в производных классах.

Требования к знаниям и умениям, приобретаемым при выполнении работ

Студенты, получив знания в результате выполнения работ должны • Программно реализовывать одиночное и множественное наследование; • Знать методы реализации классов и возможности повышения эффективности про-

грамм средствами объектно-ориентированного программирования. Знания и умения, полученные в данном курсе, понадобятся для изучения следующих

спец. предметов и дисциплин: • Проектирование информационных систем; • Администрирование и конфигурирование платформы 1С: Предприятие; • Дипломное проектирование.

Page 19: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

19

Условия и особенности выполнения работ Лабораторные работы выполняются в компьютерных классах, на компьютерах с уста-

новленной средой программирования Visual C++, компьютеры должны иметь доступ к ЛВС и кафедральному учебно-методическому компьютеру. Необходимо наличие раздаточного материала и конспекта лекций по данной дисциплине.

Взаимосвязь с теоретическим материалом учебной дисциплины

Все лабораторные работы требуют у студентов теоретических знаний, полученных на лекциях по данной дисциплине и по дисциплине «Программирование в C++»

Форма отчетности студентов

По окончанию каждой лабораторной работы студент сдает отчет в виде оформлен-ного в виде файла в любом текстовом редакторе текста программы. Выполнение всех лаб. работ и написание контрольной работы является допуском к зачету.

Лабораторная работа №1 Знакомство с языком программирования C++. Работа с арифметическими операторами. Ус-

ловный оператор. Использование рекурсии (2 часа) Цель работы: Научиться писать программный код в среде Visual C++ Задачи работы

1. Научиться запускать компилятор С++, ознакомиться с его интерфейсом и функцио-нальными возможностями.

2. Создавать новый проект – консольное приложение. 3. Использовать операторы управления, функции.

Задание: Написать программу вычислений. Сделать вывод о полученных результатах работы про-граммы. Технология работы:

1. Написать программу. 2. Осуществить проверку на соответствие выводимых данных правильному ответу. 3. Снабдить код программы подробными комментариями. 4. Сделать пометки в конспекте лекций о применяемых функциях и операторах.

Контрольные вопросы:

1. Для чего используют директивы препроцессора? 2. В котором из файлов проекта пишется непосредственно программа на языке C++? 3. Внутри какой функции заключается вся логика программы? 4. Как загрузить ранее созданный проект в среду Visual Studio? 5. Какая команда меню используется для запуска и компиляции программы в данной

среде? 6. Перечислите основные типы данных языка C++ 7. Какой синтаксис используется для объявления переменных, функций в программе? 8. Какой синтаксис используется для реализации функций? 9. Как в языке C++ будут выглядеть элементарные математические операции? Каков

приоритет выполнения этих операций?

Page 20: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

20

10. С помощью какого оператора C++ будет реализован вывод данных в консоль?

Лабораторная работа №2 Реализация классов. Конструкторы и деструкторы. (2 часа)

Цель работы: Научится реализовывать классы и создавать объекты класса. Задачи работы

1. Научиться создавать пользовательские конструкторы и деструкторы. 2. Использовать открытые и закрытые члены класса. 3. Объявлять постоянные функции-члены. 4. Реализовывать методы класса. 5. Познакомиться с возможность классов содержать другие классы в качестве данных-

членов. Задание: Реализовать класс/классы. Снабдить листинг программы подробными комментариями. Технология работы:

1. Написать программный код. 2. Реализовать класс в соответствии с заданными параметрами и методами. 3. Создать класс, содержащий другие классы в качестве данных-членов. 4. Закомментировать программный код. 5. Сделать пометки в конспекте лекций об особенностях описания классов и создания

объектов с заданными элементами данных. Контрольные вопросы:

1. С помощью какого ключевого слова происходит объявление класса? Каков синтак-сис объявления и реализации класса?

2. Чем процедура отличается от функции? 3. Где в программе происходит создание объектов класса? Каков синтаксис создания

объектов? 4. С помощью какого оператора осуществляют доступ к данным и функциям класса? 5. Для чего объявляют постоянные методы? С помощью какого ключевого слова про-

исходит объявление постоянных функций-членов? 6. Для чего используют конструктор и деструктор? Чем пользовательский конструктор

(деструктор) отличается от стандартного? 7. Какие статусы доступа вы знаете? Какие ошибки может повлечь неправильный дос-

туп при объявлении элементов данных и методов внутри класса? Каким по умолча-нию будет статус доступа к данным и методам класса, если не определить его в про-грамме?

8. Каков синтаксис реализации методов вне класса?

Лабораторная работа №3 Работа с указателями. Использование указателя this (2 часа).

Цель работы:

Научиться работать с указателями и манипулировать динамически распределяемой областью памяти.

Page 21: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

21

Задачи работы 1. Научиться использовать указатели в объектно-ориентированном программировании. 2. Знать особенности объявления и переопределения указателей. 3. Использовать указатели на объекты. 4. Использовать указатель this.

Задание:

Написать программы. Разобраться с кодом и закомментировать необходимые участ-ки листинга. Технология работы:

1. Модифицировать класс таким образом, чтобы продемонстрировать возможности по размещению и удалению объектов в области динамической памяти.

2. Написать программу, демонстрирующую использование указателя this. 3. Сделать соответствующие пометки в конспекте лекций.

Контрольные вопросы:

1. Что такое указатель? Для чего он нужен? 2. Как происходит объявление указателя в программе? 3. Что такое область динамической памяти? 4. Что такое оператор разыменовывания указателя? Для чего он необходим? 5. Какие символы используются для обращения к членам класса через указатель на

объект этого класса? 6. Для чего служат операторы new и delete? 7. Для чего нужен указатель this? Где его используют? 8. Что произойдет, если после операции delete, освободившей участок памяти, не про-

извести инициализацию указателя?

Лабораторная работа №4 Работа со ссылками. Передача объекта по ссылке с помощью указателя. Передача постоян-

ного указателя (2 часа) Цель работы:

Научится работать со ссылками и передавать ссылки на несколько объектов. Задачи работы

1. Научиться использовать указатели и ссылки в объектно-ориентированном програм-мировании.

2. Знать особенности объявления и инициализации ссылок и указателей. 3. Освоить использование ссылок в качестве псевдонима объекта. 4. Знать смысл передачи постоянного указателя на объект.

Задание: Модифицируйте класс таким образом, чтобы продемонстрировать работу ссылки как псевдонима объекта. Технология работы:

1. Написать программу, реализующую класс, переделать ее таким образом, чтобы можно было передавать объект по ссылке.

2. Сделать соответствующие пометки в конспекте лекций.

Page 22: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

22

Контрольные вопросы: 1. Что такое ссылка? Для чего она используется? 2. Каков синтаксис объявления ссылки? Что такое оператор взятия адреса? 3. Можно ли переназначать ссылки? 4. В чем различие при возвращении значения с использованием ссылки и указателя? 5. Создается ли копия объекта, если этот объект передается по ссылке? 6. Что такое константный указатель? 7. Для чего осуществляют передачу постоянного указателя на объект?

Лабораторная работа №5 Перегрузка функций. Перегрузка конструкторов. Перегрузка операторов (2 часа)

Цель работы: Освоить организацию перегруженных функций в C++. Задачи работы

1. Ознакомиться с возможностью перегрузки операторов, функций в программе. 2. Ознакомиться с возможностью перегрузки функций при использовании наследова-

ния в языке C++. Задание:

Написать программы реализации перегрузки операторов; перегрузки функций в производных классах. Технология работы:

1. Написать программу, реализующую перегрузку заданного оператора в классе. 2. Реализовать простое наследование на примере двух классов. 3. Модифицировать реализацию классов таким образом, чтобы продемонстрировать

перегрузку функций в производных классах. 4. Сделать при необходимости пометки в конспекте лекций.

Контрольные вопросы:

1. Что понимают под перегрузкой функций? Что такое сигнатура функции? 2. Приведите пример перегрузки двух функций? 3. Что понимают под перегрузкой операторов? Для чего используется перегрузка опе-

раторов? 4. Перечислите перегружаемые операторы? 5. Перечислите неперегружаемые операторы? 6. Что такое дружественная функция? Для чего она используется? 7. Можно ли назвать конструктор класса функцией? 8. В чем смысл перегрузки конструкторов?

Page 23: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

23

Лабораторная работа №6 Перегрузка префиксного и постфиксного оператора. Перегрузка бинарного оператора (2

часа) Цель работы:

Научится перегружать операторы языка C++. Задачи работы

1. Научиться различать необходимость использования префиксного оператора и пост-фиксного для получения необходимого результата работы программы.

2. Освоить реализацию перегрузки префиксного и постфиксного операторов. Задание: Написать программу, реализующую перегрузку указанного оператора. Технология работы:

1. Написать программу, реализующую перегрузку унарного оператора. 2. Написать программу, реализующую перегрузку бинарного оператора. 3. Сделать при необходимости пометки в конспекте лекций.

Контрольные вопросы:

1. В чем различие префиксного и постфиксного операторов? Каков синтаксис пере-грузки операторов?

2. Чем отличаются бинарные операторы от унарных? 3. В чем различие инкремента и декремента? 4. Для чего используется перегрузка операторов? 5. В каких случаях используют дружественные функции?

Page 24: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

24

Лабораторная работа №7 Простое наследование. Перегрузка конструкторов в производных классах. Отсечение дан-

ных (2 часа) Цель работы:

Освоить организацию перегруженных функций в объектно-ориентированном про-граммировании. Задачи работы

1. Ознакомиться с возможностью перегрузки функций внутри классов. 2. Получить практические навыки при использовании простого наследования в языке

C++. Задание:

Продемонстрировать пример простого наследования на примере иерархии классов, продемонстрировать перегрузку конструктора на примере одиночного наследования, мо-дифицировать программу таким образом, чтобы продемонстрировать отсечение данных. Технология работы:

1. Написать программу, реализующую простое наследование на примере двух классов. 2. Модифицировать программу таким образом, чтобы продемонстрировать перегрузку

конструкторов в производных классах. 3. Переопределить метод базового класса в производном. 4. Продемонстрировать возможность возникновения ситуации сокрытия методов базо-

вого класса в производном. 5. Сделать при необходимости пометки в конспекте лекций.

Контрольные вопросы:

1. Что такое наследование? 2. Каков синтаксис простого наследования в C++? 3. С помощью чего осуществляется управление доступом к данным внутри классов? 4. Для чего служит модификатор статуса доступа? 5. Как вы понимаете понятие «полиморфизм» в объектно-ориентированном програм-

мировании? 6. Для чего служат конструкторы и деструкторы? 7. Для чего необходима перегрузка конструкторов и деструкторов базового класса в

производных классах? 8. Что такое переопределение функций базового класса в производных классах? Для

чего оно используется? 9. Когда может возникнуть ситуация сокрытия методов базового класса? 10. Что нужно сделать в случае сокрытия метода базового класса, чтобы обратиться к

ним напрямую для объекта производного класса?

Лабораторная работа №8 Одиночное наследование. Операция переноса вниз. Операция приведения вверх (2 часа)

Цель работы:

Разобраться с проблемами, возникающими при одиночном наследовании.

Page 25: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

25

Задачи работы

1. Ознакомиться с особенностями создания объектов с данными и методами из не-скольких классов.

2. Получить практические навыки при использовании одиночного наследования в язы-ке C++.

Задание:

Продемонстрировать пример простого наследования на примере иерархии классов, продемонстрировать перенос метода вверх по иерархии классов, модифицировать про-грамму таким образом, чтобы продемонстрировать операцию приведения вниз. Технология работы:

1. Написать программу, реализующую одиночное наследование на примере нескольких классов.

2. Перенести методы двух разных классов в базовый класс, чтобы реализовать объект, который будет использовать методы этих классов. Проанализировать результат.

3. Произвести приведение указателя к типу производного класса, чтобы определить, что он связан не с объектом класса, из которого берется метод, а с создаваемым на-ми объектом.

4. Сделать при необходимости пометки в конспекте лекций.

Контрольные вопросы:

1. Что такое наследование? 2. Каков синтаксис одиночного наследования в C++? 3. Какие трудности возникают при одиночном наследовании, когда необходимо соз-

дать объект с данными из двух разных классов? 4. В чем недостаток переноса метода класса вверх по иерархическому списку классов? 5. В чем смысл операции приведения вниз?

Лабораторная работа №9 Множественное наследование (2 часа)

Цель работы:

Освоить использование механизмов множественного наследования в объектно-ориентированном программировании. Задачи работы

1. Ознакомиться с возможностями методологии объектно-ориентированного програм-мирования на примере множественного наследования.

2. Получить практические навыки при использовании множественного наследования в языке C++.

Задание:

Продемонстрировать пример множественного наследования на примере иерархии классов. Технология работы:

Page 26: ОБЪЕКТНО ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ62.182.30.44/ft/301-000930.pdf · Объектно-ориентированное пр ограммирование

26

1. Реализовать базовые классы. 2. Реализовать производные классы. 3. Продемонстрировать принцип наследования на примере элементов данных и мето-

дов базовых классов. 4. Поэкспериментировать с модификаторами доступа к данным классов. 5. Сделать при необходимости пометки в конспекте лекций.

Контрольные вопросы:

1. Что называют множественным наследованием? 2. Каков синтаксис описания множественного наследования? 3. Для чего служит оператор “ : ” при объявлении производного класса? 4. Если статус доступа в базовом классе public, модификатор доступа protected, то ка-

ким будет статус доступа в производном классе? 5. Какие основные принципы объектно-ориентированного подхода в программирова-

нии вы знаете? 6. Как вы понимаете понятие “инкапсуляция”? 7. Когда использование объектно-ориентированного подхода в программировании

обоснованно?