Задание 7 - 19 мая в 15 часов

Часть 1. 30 баллов

Скачайте заготовку с виртуальным классом shape. Посмотрите его интерфейс(запускать пока бесполезно - нет классов-наследников). Скачайте из предыдущих занятий классы треугольник и прямоугольник.

Переделайте классы треугольник и прямоугольник как наследников класса shape (все чисто виртуальные методы должны быть реализованы!).

Реализовать класс круг как наследник класса shape.

Часть 2 «РостовЛифтМонтаж» возвращается

Реализуйте иерархию классов лифтов с различными возможностями, указанными на диаграмме, приведённой ниже. Использование каждого класса должно демонстрироваться в трёх функциях в main.cpp:

  1. [функция part1, 20 баллов] Использование автоматического лифта (эту программу следует написать сразу после реализации классов SimpleElevator и AutomaticElevator);

  2. [функция part2, 20 баллов] Использование очень информативного лифта.

  3. [функция part3, 30 баллов] Использование лифта с ограничениями на этажи.

Обратите внимание, что на диаграмме не указаны не указано, какие функции-члены необходимо сделать виртуальными — вы должны определить это самостоятельно.



Дополнительная задача**

Реализовать функцию

void bulk_move(std::vector<AutomaticElevator *> const & vElevs, int minStoreys, int N)

которая повторяет N раз одно и то же действие: перемещает каждый лифт в коллекции на случайный этаж (с номером не больше minStoreys) с помощью функции MoveTo. Параметр minStoreys указывает минимальное число этажей в зданиях, к которым относятся данные лифты. К каждому лифту до перемещения выводится информация о его типе во время выполнения (RTTI, typeid, type_info::name).

Проверьте работу созданной функции на максимально разнообразной коллекции лифтов. Не используйте динамическую память: вектор должен содержать адреса стековых объектов.