Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3315

.pdf
Скачиваний:
5
Добавлен:
08.01.2021
Размер:
526.76 Кб
Скачать

Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования

«Воронежский государственный лесотехнический университет имени Г.Ф. Морозова»

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

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

09.03.02 – Информационные системы и технологии

Воронеж 2016

УДК 681.3.06 (076)

Лавлинский, В. В. Объектно-ориентированное программирование Текст : методические указания для самостоятельной работы студентов по направлению подготовки 09.03.02 – Информационные системы и технологии / В.В. Лавлинский, О.В.Оксюта, Ю.Г. Табаков; М-во образования и науки РФ, ФГБОУ ВО «ВГЛТУ им. Г.Ф. Морозова». – Воронеж, 2016. – 22 с.

Печатается по решению учебно-методического совета ФГБОУ ВО «ВГЛТУ им. Г.Ф. Морозова» (протокол № __ от _______ 2016 г.)

Рецензент заведующий кафедрой электротехники и автоматики ФГБОУ ВПО ВГАУ д-р.техн.наук., проф. Д.Н. Афоничев

 

© Оксюта О.В., 2016

ISBN

© ФГБОУ ВО «Воронежский государственный

 

лесотехнический университет имени

 

Г.Ф. Морозова», 2016

ВВЕДЕНИЕ

Методические указания подготовлены в соответствии с рабочей программой дисциплины «Объектно-ориентированное программирование» для студентов по направлениям подготовки 09.03.02 – Информационные системы и технологии. Целью изучения данной дисциплины является формирование у студентов знаний и умений применения основных приемов объектноориентированного решения задач и способы построения объектноориентированных алгоритмов, объектно-ориентированного программирования, отладки и испытания объектно-ориентированных программ.

В результате освоения дисциплины студент должен:

знать: концепцию объектно-ориентированного программирования, основные ее понятия (класс, объект), свойства (инкапсуляция, наследование, полиморфизм), методику анализа и проектирования объектноориентированных программ, основные понятия, синтаксис и семантику конструкций языка программирования С++, способы составления объектноориентированных программ на языке программирования С++, возможности интегрированной среды программирования на языке С++;

уметь: проектировать, программировать и отлаживать объектноориентированные программы на языке С++;

владеть: навыками самостоятельной разработки, отладки, испытаний

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

СОДЕРЖАНИЕ ДИСЦИПЛИНЫ

Раздел 1. Объектно-ориентированная методология изучения предметной области

Объектно-ориентированный подход, применяемый при проектировании и создании сложных систем. Составные части объектноориентированной методологии. История развития объектноориентированных языков. Примеры объектно-ориентированных языков.

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

Парадигма программирования. Модульное программирование. Нисходящее программирование. Структурное программирование.

3

Раздел 3. Объектно-ориентированное программирование как технология программирования

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

Раздел 4. Расширение языка Си++

Прототипы функций. Перегрузка функций. Значения формальных параметров по умолчанию. Ссылки и параметры-ссылки. Объявления переменных. Встраиваемые функции. Операции new и delete.

Раздел 5. Структура класса

Функции-члены и данные-члены. Интерфейсы и реализация. Конструкторы и инициализация. Конструктор без параметров (по умолчанию). Деструкторы и очистка. Конструктор копирования. Указатель this. Статические члены: функции и данные. Указатели на члены. Структуры и объединения. Константные члены-функции и константные объекты.

Раздел 6. Дружественные функции и перегрузка операций

Функции-друзья. Перегрузка бинарных и унарных операций. Перегруженные операции индексирования, вызова функций, инкремента и декремента префиксных и постфиксных. Перегрузка new, delete. Преобразование типов, определяемых пользователем с помощью конструкторов и операций преобразования. Неявное преобразование типов. Друзья-функции и друзьяклассы.

Раздел 7. Производные классы

Наследование классов и производные классы. Конструкторы, деструкторы и наследование. Множественное наследование. Виртуальные базовые классы. Иерархия классов. Виртуальные функции. Полиморфизм. Абстрактные классы и чистые виртуальные функции.

Раздел 8. Обработка исключительных ситуаций

Обработка ошибок в стандартном Си. Использование assert, кодов возврата, сигналов, setjmp и longjmp. Использование matherr() и set_new_handler(). Объектно-ориентированная обработка исключений. При-

менение try, catch, throw.

Раздел 9. Библиотеки классов

Библиотека для организации ввода вывода в потоки. Библиотека контейнерных классов CLASSLIB в BORLAND C++. Библиотека OWL. Библио-

4

тека MFC. Понятие программного обеспечения. Жизненный цикл программы. Документирование программы.

СОДЕРЖАНИЕ ПРАКТИЧЕСКИХ ЗАНЯТИЙ

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

 

5

 

Таблица 1

 

 

№ п/п

Наименование практических работ

 

 

1

2

 

 

1

Создание и хранение шаблонов компонентов

 

 

2

Объявление и описание классов

 

 

3

Структура класса компонента

 

 

4

Создание методов и событий

 

 

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

Примеры заданий к лабораторной работе № 1

По одному из приведенных ниже вариантов составить программу создания средствами ООП набора управляемых с клавиатуры графических объектов. Организовать управление движением объектов курсорными клавишами по вертикали, по горизонтали и по диагоналям. Ввести возможность менять цвет объектов (изменением кода цвета).

1.Набор из 30 пикселов разного цвета, двух ромбов с диагоналями, параллельными краям экрана, и двух эллипсов. Менять размеры ромба и эллипса по вертикали и по горизонтали.

2.Набор нз 40 пикселов одного цвета, двух прямоугольников со сторонами, параллельными краям экрана, и двух дуг окружности. Менять размеры прямоугольника по вертикали и по горизонтали, а для дуги менять радиус

иконечный угол (стартовый угол принять равным нулю).

3.Набор нз 50 пикселов разного цвета, двух прямоугольных треугольников с катетами, параллельными краям экрана, н двух отрезков толстой линии. Менять размеры треугольников по вертикали и по горизонтали. Для отрезков ввести возможность их врашения по или против часовой стрелки.

4.Набор из 60 пикселов одного цвета, двух прямоугольников со сторонами, параллельными краям экрана, и двух отрезков прямой. Менять размеры прямоугольника по вертикали и по горизонтали, а для отрезков задать вращение по или против часовой стрелки.

Примеры заданий к лабораторной работе № 2

6

1.Определить пользовательский класс в соответствии с вариантом за-

дания.

2.Определить в классе следующие конструкторы: без параметров, с параметрами, копирования.

3.Определить в классе деструктор.

4.Определить в классе компоненты-функции для просмотра и установки полей данных.

5.Определить указатель на компоненту-функцию.

6.Определить указатель на экземпляр класса.

7.Написать демонстрационную программу, в которой создаются и разрушаются объекты пользовательского класса и каждый вызов конструктора и деструктора сопровождается выдачей соответствующего сообщения (какой объект какой конструктор или деструктор вызвал).

8.Показать в программе использование указателя на объект и указателя на компоненту-функцию.

Варианты:

Описания членов - данных пользовательских классов

1.СТУДЕНТ имя – char*

курс – int

пол – int(bool)

2.СЛУЖАЩИЙ имя – char*

возраст – int рабочий стаж – int

3.КАДРЫ имя – char*

номер цеха – int разряд – int

4.ИЗДЕЛИЕ имя – char* шифр – char*

количество – int

5.БИБЛИОТЕКА имя – char*

автор – char*

7

стоимость – float

Примеры заданий к лабораторной работе № 3

1.Для определения иерархии классов связать отношением наследования классы, приведенные в приложении (для заданного варианта). Из перечисленных классов выбрать один, который будет стоять во главе иерархии. Это абстрактный класс.

2.Определить в классах все необходимые конструкторы и деструктор.

3.Компонентные данные класса специфицировать как protected.

4.Пример определения статических компонентов:

static person* begin; // указатель на начало списка static void print(void); // просмотр списка

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

6.Для добавления объекта в список предусмотреть метод класса, т.е. объект сам добавляет себя в список. Например, a.Add() − объект a добавляет себя в список.

Включение объекта в список можно выполнять при создании объекта, т.е. поместить операторы включения в конструктор. В случае иерархии классов, включение объекта в список должен выполнять только конструктор базового класса. Вы должны продемонстрировать оба этих способа.

7.Список просматривать путем вызова виртуального метода Show каждого объекта.

8.Статический метод просмотра списка вызывать не через объект, а через класс.

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

Варианты классов:

1) студент, преподаватель, персона, зав.кафедрой; 2) служащий, персона, рабочий, инженер; 3) рабочий, кадры, инженер, администрация; 4) деталь, механизм, изделие, узел;

5) организация, страховая компания, судостроительная компания, за-

вод.

8

Примеры заданий к лабораторной работе № 4

1. Выбрать группу объектов, которые будут обрабатывать события. 2.Для выбранной группы объектов определить перечень операций, ко-

торые должны выполняться по командам пользователя.

3.Определить вид командной строки <код_операции><параметры>. Решить вопросы: как кодируются операции? какие передаются пара-

метры?

4.Определить иерархию объектов. Если необходимо, добавить новые объекты (группы объектов).

5.Определить иерархию классов. Если необходимо, добавить новые

классы.

6.Определить, какой объект в программе играет роль приложения. В случае необходимости добавить в иерархию классов класс TApp. Решить, в каком классе будет метод Execute, организующий главный цикл обработки событий.

7.Определить и реализовать необходимые для обработки событий ме-

тоды.

8.Написать основную функцию (main).

ВОПРОСЫ К ЭКЗАМЕНУ

1.Объектно-ориентированный подход, применяемый при проектировании и создании сложных систем.

2.Составные части объектно-ориентированной методологии.

3.История развития объектно-ориентированных языков.

4.Примеры объектно-ориентированных языков.

5.Принципы структурного и объектно-ориентированного программирования.

6.Парадигма программирования.

7.Модульное программирование.

8.Нисходящее программирование.

9.Структурное программирование.

10.Объектно-ориентированное программирование как технология программирования.

11.Понятия объекта, класса объектов.

9

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

13.Прототипы функций.

14.Перегрузка функций.

15.Значения формальных параметров по умолчанию.

16.Ссылки и параметры-ссылки.

17.Объявления переменных. Встраиваемые функции.

18.Операции new и delete.

19.Структура класса.

20.Функции-члены и данные-члены.

21.Интерфейсы и реализация.

22.Конструкторы и инициализация.

23.Конструктор без параметров (по умолчанию).

24.Деструкторы и очистка.

25.Конструктор копирования.

26.Указатель this.

27.Статические члены: функции и данные.

28.Указатели на члены.

29.Структуры и объединения.

30.Константные члены-функции и константные объекты.

31.Функции-друзья.

32.Перегрузка бинарных и унарных операций.

33.Перегруженные операции индексирования, вызова функций, инкремента и декремента префиксных и постфиксных.

34.Перегрузка new, delete.

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

36.Неявное преобразование типов.

37.Друзья-функции и друзья-классы.

38.Наследование классов и производные классы.

39.Конструкторы, деструкторы и наследование.

40.Множественное наследование.

41.Виртуальные базовые классы.

42.Иерархия классов.

43.Виртуальные функции.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]