Поэтапно решим задачу
Создать класс «окружность» (метод рассчитывает площадь) и два производных класса «цилиндр» и «конус» » (методы каждого класса рассчитывают площадь поверхности объемной фигуры и её объём). Продемонстрировать необходимость виртуальных методов при использовании указателей на объекты.
Этап 1. Создание класса Окружность. (Использовать материал)
а) Определение класса (поля: r, L,S; методы: конструктор, Длина окружности, Площадь).
б) Описание конструктора.а) Определение класса (поля: r, L,S; методы: конструктор, Длина окружности, Площадь).
в) Функция main(): описание объекта-экземпляра класса
г) Описание других методов
д) Функция main(): вызов методов для вычисления и печати длины окружности и площади.
е) Описание указателя на объект класса. Создание динамического объекта. Вызов методов для вычисления и печать длины окружности и площади с помощью оператора ->(см. ниже)
Пример работы с динамическими объектами (нажмите на рис, чтобы сделать крупнее):
Этап 2. Создание класса-наследника Цилиндр (использовать материал)
а) Описание класса-наследника: доп. поля (высота); переопределённый метод Площадь; новый метод Объём.
Пример работы с динамическими объектами (нажмите на рис, чтобы сделать крупнее):
Этап 2. Создание класса-наследника Цилиндр (использовать материал)
а) Описание класса-наследника: доп. поля (высота); переопределённый метод Площадь; новый метод Объём.
б) Описание конструктора с вызовом конструктора родителя.
в) Функция main(): добавляем описание объекта-экземпляра класса-наследника.
г) Переопределение метода Площадь, его вызов для проверки.
д) Определение метода Объём, его вызов для проверки.
Этап 3. Демонстрация возможностей позднего связывания
а) Убираем из main() вывод на экран полей всех объектов
б) Добавляем в родительский класс поле nom, которое используем для определения типа объекта. Напишем метод, который будет возвращать это поле.
в) Описываем функцию AllPrint (не принадлежащую классам), которая выводит на экран радиус, высоту (если есть), площадь поверхности и объем (если есть) объекта, переданного с помощью указателя.
г) убеждаемся, что система неправильно рассчитывает площадь (потому что вызывает метод родителя для любого объекта.
д) Делаем нужные методы виртуальными.
Этап 4. Создание класса Конус
Пример программы
Здесь позже появится пример программы.
Вопросы задавайте в комментариях к этому сообщению.
а) Убираем из main() вывод на экран полей всех объектов
б) Добавляем в родительский класс поле nom, которое используем для определения типа объекта. Напишем метод, который будет возвращать это поле.
в) Описываем функцию AllPrint (не принадлежащую классам), которая выводит на экран радиус, высоту (если есть), площадь поверхности и объем (если есть) объекта, переданного с помощью указателя.
г) убеждаемся, что система неправильно рассчитывает площадь (потому что вызывает метод родителя для любого объекта.
д) Делаем нужные методы виртуальными.
Этап 4. Создание класса Конус
Пример программы
Здесь позже появится пример программы.
Вопросы задавайте в комментариях к этому сообщению.
Комментариев нет:
Отправить комментарий