Lab4 - todo (Лабораторная работа №4)
Описание файла
Файл "Lab4 - todo" внутри архива находится в следующих папках: Лабораторная работа №4, лаба 4, 2. Документ из архива "Лабораторная работа №4", который расположен в категории "". Всё это находится в предмете "объектно-ориентированное программирование (ооп)" из 3 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "объектно-ориентированное программирование (ооп)" в общих файлах.
Онлайн просмотр документа "Lab4 - todo"
Текст из документа "Lab4 - todo"
3
Требования к ЛР № 4 по курсу ПППО
(3 курс ИУ5)
“Наследование, виртуальные функции и абстрактные классы”
-
Цель работы
Целью лабораторной работы является изучение оболочки(IDE) системы программирования BC 3.1 C++ и способов наследования классов, использование виртуальных функций. Студенты создают свои классы и исследуют механизмы вызова виртуальных функций.
-
Изучаемые вопросы
В процесса лабораторной работы( она рассчитана на 8 часов) необходимо изучить:
-
Порядок и особенности работы с оболочкой: использование отладчика и средств просмотра классов;
-
Описание четырех классов( Absrt, Deriv1 ,Deriv2 и Deriv3), связанных следующим образом: Absrt - абстрактный класс, наследованный от Object( classlib); Deriv1 - наследуется от Absrt, Deriv2 наследуется от Deriv1, Deriv3 наследуется от Deriv1.
-
Классы Deriv1 ,Deriv2 и Deriv3, не являются абстрактными и имеют по крайней мере одну виртуальную функцию, определенную в классе Absrt как чистая.
-
Описание объектов классов Absrt, Deriv1 ,Deriv2 и Deriv3( a1, d1, d2, d3) и их инициализация и указателей на эти типы( pa1, pd1, pd2, pd3);
-
Вызовы виртуальных функций через имена объектов и указатели, в том числе через указатель на базовый абстрактный класс( pa1).
-
Занесение объектов разных типов в один список типа List( classlib).
-
Распечатка списка с помощью цикла, функции printOn и собственной виртуальной функции print , на основе класса LISTITERATOR.
-
Порядок работы
-
Изучение оболочки BC 3.1 C++ в интерактивном режиме( всех пунктов меню и окон настройки работы оболочки)
-
Составление блок-схемы и написание программы, состоящей из двух исходных файлов.
-
Редактирование текстов в среде оболочки
-
Создание проектного файла
-
Отладка программы с помощью отладчика
-
Формирование листинга программы и листинга результатов
-
Оформление отчета
-
Требования к работе
В лабораторной работе в изложенном ниже порядке должны быть отражены следующие действия:
Обязательные требования:
-
Описание четырех классов( Absrt, Deriv1 ,Deriv2 и Deriv3) (см. выше). -1
-
В классе Absrt определяется свойство, задаваемое вариантом 2В (см. ниже).
-
В классах должна быть определена и переопределена виртуальная функция print, для печати переменной и названия класса объекта.
-
Описание объектов классов Absrt, Deriv1 ,Deriv2 и Deriv3( a1, d1, d2, d3) и их инициализация и указателей на эти типы( pa1, pd1, pd2, pd3);
-
Выполняется вызов функции print для имен объектов ( d1, d2, d3).
-
Задаются значения указателей( pd1, pd2, pd3) и выполняется вызов функции print для этих указателей.
-
Задается значение pa1 как указатель на d1 и вызывается функции print через этот указатель. Задается значение pa1 как указатель на d2 и вызывается функции print через этот указатель. Задается значение pa1 как указатель на d3 и вызывается функции print через этот указатель( виртуальный вызов !!).
-
Дается описание объекта типа List - Alist.
-
Тремя циклами в список ( add) последовательно заносятся по пять объектов типов Deriv1 ,Deriv2 и Deriv3. Объекты порождаются оператором new.
-
Выполняется распечатка списка с помощью цикла( LISTITERATOR) и функции printOn, перегруженной в классах Deriv1 ,Deriv2 и Deriv3( current, restart, int).
-
Выполняется распечатка списка с помощью цикла( LISTITERATOR) и функции print, перегруженной в классах Deriv1 ,Deriv2 и Deriv3( используя current, restart, int) и вычисляемого указателя на базовый класс( pa1). Для примера ссылки: (( Absrt*) &AI.current())->print();
-
Удаление элементов из списка по вариантам (см. ниже 3В)
Дополнительные требования (выполняются по желанию сильными студентами):
-
Все тоже с классами DOUBLELIST и DOUBLELISTITERATOR;
-
Продемонстрировать использование виртуального класса на примере.
-
Оформление отчета
В отчет по ЛР должно быть включено:
-
Титульный лист, цель и порядок работы
-
Перечень ошибок при отладке
-
Диаграмма классов созданных классов и диаграмма объектов программы
-
Листинг программы и листинг результатов
-
Варианты (см. таблицу вариантов)
Вариантные требования:
-
Создание всех новых классов с помощью указателей (1В)
-
В классе Absrt определяется свойство (2В)
-
Типа int (2.1В)
-
Типа char[20] (2.2В)
-
Типа double (2.3В)
-
По завершению, в одном цикле, по списку удалить объекты заданных классов и распечать результат (3В)
-
Deriv1 и Deriv3 (3.1В)
-
Deriv2 и Deriv3 (3.2В)
-
Deriv1 и Deriv2 (3.3В)
Варианты | 1-10(по сп.) | 13-24(по сп.) | 24-35(по сп.) |
ИУ5- 61 | 1В,2.1В,3.2В | 1,2.1В,3.3В | 1В,2.3В,3.1В |
ИУ5- 62 | 1В,2.3В,3.2В | 1В,2.2В,3.3В | 1,2.3В,3.3В |
ИУ5- 63 | 1,2.2В,3.1В | 1,2.2В,3.1В | 1,2.2В,3.2В |
Все идентификаторы должны включать номер варианта по списку, а комментарии ссылку на разработчика (вариант - группа - ФИО)!!!.