Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания по курсовой АЯИП (2 курс,....doc
Скачиваний:
8
Добавлен:
20.04.2019
Размер:
402.43 Кб
Скачать

4.3. Лабораторная работа 3.

Механизм наследования классов.

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

Общие сведения

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

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

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

Лабораторное задание

В соответствии с вариантом лабораторного задания разработать производный класс. В качестве базовых служат классы, созданные в лабораторной работе 1. Разработать программу, формирующую список объектов производных классов. Спецификации производных классов даны в вариантах лабораторных заданий. Дополнить базовые классы методами, выполняющими сортировку списка по различным критериям и поиск объекта (объектов) в списке по заданным свойствам.

Тип проекта – Win32 Application (без MFC).

Варианты лабораторных заданий

  1. Определить производный класс “Конкретная книга”. Класс должен включать следующие специфические свойства: название книги, количество страниц, цену и т.п.

  2. Определить производный класс “Конкретное изделие”. Класс должен включать следующие специфические свойства: наименование изделия, завод-изготовитель, цена и т.п.

  3. Определить производный класс “Автомобиль”. Класс должен включать следующие специфические свойства: модель, название, фирма-разработчик, объем двигателя, мощность, максимальная скорость и т.п.

  4. Определить производный класс “Радиодеталь”. Класс должен включать следующие специфические свойства: тип, номинал, мощность и т.д.

  5. Создать производный класс «Студент кафедры». Класс должен включать следующие специфические свойства: Ф.И.О., номер зачетной книжки, средний балл по результатам последней сессии и т.д.

  6. Создать производный класс «житель города». Класс должен включать следующие специфические свойства: Ф.И.О., адрес, профессия, средний заработок и т.д.

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

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

  9. Создать производный класс от класса «геометрическая фигура». Определить специфические свойства, присущие производному классу. К производным классам можно отнести: окружность (радиус, центр), дуга окружности (радиус, центр, начальный и конечный угол), прямая линия (координаты начала и конца), точка (координаты), полилиния (массив линий) и т.п.

  10. Определить производный класс «сервер», расширяющий функциональность базового класса «компьютер». Класс должен включать следующие специфические свойства: название, назначение, количество процессоров, тип операционной системы, объем дисковой памяти, наличие RAID-массива, тип сетевой карты и т.п.

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

  1. Как описывается производный класс?

  2. Как определяется видимость членов производных классов?

  3. В чем заключается особенность вызова конструкторов при наследовании?

  4. В чем заключается множественное наследование?