Перейти к основному содержимому

Указания по выполнению работы

Иерархия классов

  1. Для определения иерархии классов связать отношением наследования классы, приведенные в приложении (для заданного варианта). Из перечисленных классов выбрать один, который будет стоять во главе иерархии. Это абстрактный класс.

  2. Определить в классах все необходимые конструкторы и деструкторы. Не забыть в абстрактном классе определить виртуальный деструктор.

  3. В конструкторах и деструкторах для абстрактного класса и производных классов предусмотреть вывод отладочных сообщений об их вызове в консоль. Например:

    std::cout << "A()" << std::endl;  // при вызове конструктора
    std::cout << "~A()" << std::endl; // при вызове деструктора
  4. Компонентные данные класса специфицировать как protected.

  5. В абстрактном классе объявить виртуальный метод show, который отвечает за отображение данных класса. В каждом производном классе реализовать данный метод с учетом специфики каждого класса.

  6. Определение классов, их реализацию, демонстрационную программу поместить в отдельные файлы. Данные файлы должны быть упакованы в отдельную статическую библиотеку.

Контейнер классов

  1. В функции main() создать экземпляр самостоятельно разработанного вектора из предыдущей работы для реализации контейнера из заданных классов (далее – контейнер). В качестве типа аргумента шаблона использовать указатель на абстрактный класс для демонстрации полиморфизма.

    осторожно

    В работе запрещено использование контейнеров STL (vector, list и др.).

    Перед использованием самостоятельно разработанного вектора рекомендуется изучить статью о линковке шаблонного класса и его специализации.

  2. Реализовать функции, которые в качестве аргумента принимают ссылку на контейнер:

    1. Функция print для вывода всех связанных с контейнером экземпляров производных классов с указанием индекса в контейнере.

    2. Функция remove для удаления конкретного указателя по заданному индексу из контейнера и для удаления динамического объекта по этому указателю.

    3. Функция clear для очистки контейнера и удаления всех динамически созданных объектов по указателям из контейнера.

      к сведению

      При отладке программы по отладочным сообщениям из деструкторов, убедитесь в корректной работе виртуальных деструкторов.

Режимы выполнения программы

Для демонстрации проделанной работы, необходимо продемонстрировать:

  1. Добавление в контейнер динамически созданных экземпляров заданных классов.
  2. Работу функции print.
  3. Работу функции remove.
  4. Работу функции clear.

Демонстрационный режим

В демонстрационном режиме исполнитель самостоятельно наполняет контейнер всеми возможными экземплярами производных классов.

Интерактивный режим

В интерактивном режиме указанные выше пункты к демонстрации представить в виде консольного меню (по аналогии интерактивного режима лабораторной работы №2). Данные об экземпляре производном классе вводить с клавиатуры. Индекс объекта к удалению получать от пользователя. Пользователь информацию об индексах должен получать при вызове функции print через меню.