Указания по выполнению работы
Иерархия классов
-
Для определения иерархии классов связать отношением наследования классы, приведенные в приложении (для заданного варианта). Из перечисленных классов выбрать один, который будет стоять во главе иерархии. Это абстрактный класс.
-
Определить в классах все необходимые конструкто ры и деструкторы. Не забыть в абстрактном классе определить виртуальный деструктор.
-
В конструкторах и деструкторах для абстрактного класса и производных классов предусмотреть вывод отладочных сообщений об их вызове в консоль. Например:
std::cout << "A()" << std::endl; // при вызове конструктора
std::cout << "~A()" << std::endl; // при вызове деструктора -
Компонентные данные класса специфицировать как
protected
. -
В абстрактном классе объявить виртуальный метод
show
, который отвечает за отображение данных класса. В каждом производном классе реализовать данный метод с учетом специфики каждого класса. -
Определение классов, их реализацию, демонстрационную программу поместить в отдельные файлы. Данные файлы должны быть упакованы в отдельную статическую библиотеку.
Контейнер классов
-
В функции
main()
создать экземпляр самостоятельно разработанного вектора из предыдущей работы для реализации контейнера из заданных классов (далее – контейнер). В качестве типа аргумента шаблона использовать указатель на абстрактный класс для демонстрации полиморфизма.осторожноВ работе запрещено использование контейнеров STL (
vector
,list
и др.).Перед использованием самостоятельно разработанного вектора рекомендуется изучить статью о линковке шаблонного класса и его специализации.
-
Реализовать функции, которые в качестве аргумента принимают ссылку на контейнер:
-
Функция
print
для вывода всех связанных с контейнером экземпля ров производных классов с указанием индекса в контейнере. -
Функция
remove
для удаления конкретного указателя по заданному индексу из контейнера и для удаления динамического объекта по этому указателю. -
Функция
clear
для очистки контейнера и удаления всех динамически созданных объектов по указателям из контейнера.к сведениюПри отладке программы по отладочным сообщениям из деструкторов, убедитесь в корректной работе виртуальных деструкторов.
-
Режимы выполнения программы
Для демонстрации проделанной работы, необходимо продемонстрировать:
- Добавление в контейнер динамически созданных экземпляров заданных классов.
- Работу функции
print
. - Работу функции
remove
. - Работу функции
clear
.
Демонстрационный режим
В демонстрационном режиме исполнитель самостоятельно наполняет контейнер всеми возможными экземплярами производных классов.
Интерактивный режим
В интерактивном режиме указанные выше пункты к демонстрации представить в виде консольного меню (по аналогии интерактивного режима лабораторной работы №2). Данные об экземпляре производном классе вводить с клавиатуры. Индекс объекта к удалению получать от пользователя. Пользователь информацию об индексах должен получать при вызове функции print
через меню.