Задание 7 - 19 мая в 15 часов
Часть 1. 30 баллов
Скачайте заготовку с виртуальным классом shape. Посмотрите его интерфейс(запускать пока бесполезно - нет классов-наследников). Скачайте из предыдущих занятий классы треугольник и прямоугольник.
Переделайте классы треугольник и прямоугольник как наследников класса shape (все чисто виртуальные методы должны быть реализованы!).
Реализовать класс круг как наследник класса shape.
Часть 2 «РостовЛифтМонтаж» возвращается
Реализуйте иерархию классов лифтов с различными возможностями,
указанными на диаграмме, приведённой ниже. Использование каждого класса
должно демонстрироваться в трёх функциях в main.cpp
:
[функция
part1
, 20 баллов] Использование автоматического лифта (эту программу следует написать сразу после реализации классов SimpleElevator и AutomaticElevator);[функция
part2
, 20 баллов] Использование очень информативного лифта.[функция
part3
, 30 баллов] Использование лифта с ограничениями на этажи.
Обратите внимание, что на диаграмме не указаны не указано, какие функции-члены необходимо сделать виртуальными — вы должны определить это самостоятельно.
Дополнительная задача**
Реализовать функцию
void bulk_move(std::vector<AutomaticElevator *> const & vElevs, int minStoreys, int N)
которая повторяет N раз одно и то же действие: перемещает каждый лифт в коллекции на случайный этаж (с номером не больше minStoreys
) с помощью функции MoveTo
. Параметр minStoreys
указывает минимальное число этажей в зданиях, к которым относятся
данные лифты. К каждому лифту до перемещения выводится информация о его
типе во время выполнения (RTTI, typeid
, type_info::name
).
Проверьте работу созданной функции на максимально разнообразной коллекции лифтов. Не используйте динамическую память: вектор должен содержать адреса стековых объектов.