Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
задания ооп.docx
Скачиваний:
6
Добавлен:
16.11.2019
Размер:
33.29 Кб
Скачать

Практическое задание 7. Реализация библиотеки классов для графических примитивов с использованием виртуальных методов.

Постановка задачи:

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

Порядок выполнения работы:

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

  2. Внести в базовый класс фигур следующие изменения:

  • метод перемещения объявить неабстрактным и невиртуальным (убрать соответствующие директивы из заголовка метода)

  • объявление метода прорисовки оставить без изменений (использовать директивы virtual и abstract)

  • добавить программную реализацию метода перемещения с вызовом виртуального абстрактного метода прорисовки

  1. В каждый дочерний класс внести следующие изменения:

  • убрать объявление метода перемещения

  • убрать программную реализацию метода перемещения

  • объявить метод прорисовки переопределяемым с помощью директивы override

  1. С помощью демонстрационного модуля проверить работу механизма переопределения методов, выполнив создание и перемещение всех реализованных графических объектов (окружностей, прямоугольников, эллипсов и др.).

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

Постановка задачи.

Спроектировать и реализовать объект-контейнер для хранения и обработки любых графических объектов, объединенных общей иерархией. Основа контейнера – массив полиморфных объектных переменных-указателей на графические объекты. Объект-контейнер должен выполнять стандартный набор операций: добавление и удаление объектов, поиск и циклическую обработку всех объектов в контейнере. Дополнительно необходимо реализовать операции выборочной обработки объектов в контейнере, такие как перемещение только криволинейных объектов, перемещение только прямоугольных объектов и т.д. Для проверки реализованных методов создать тестирующую программу с простым графическим интерфейсом.

Исходные данные:

  • реализованная в предыдущем задании библиотека графических объектов с виртуальными методами

  • реализованный в предыдущих заданиях простой контейнер-массив для однотипных объектов (окружностей)

Порядок выполнения работы:

1. Открыть проект, в котором был реализован простейший контейнер-массив для однотипных объектов и сохранить его в новом каталоге

2. Удалить из проекта модуль, в котором реализован класс окружностей и добавить модуль (модули), содержащий библиотеку классов для графических объектов (минимальный набор классов должен включать следующие классы: корневой класс Фигура, дочерние классы Окружность и Прямоугольник, дочерний класс Эллипс).

3. В разделе интерфейса модуля-контейнера подключить модуль (модули) с библиотекой классов для графических объектов

4. В описании контейнерного класса заменить конкретный классовый тип (например TCircle) на общий корневой классовый тип TFigure

5. Добавить в контейнерный класс второй конструктор, который заполняет весь массив случайным набором графических объектов. Для этого организуется цикл, в котором генерируется случайное число со значениями 0, 1 или 2, по которому с помощью оператора выбора выполняется вызов конструктора для создания одного из трех возможных графических объекта (окружность, прямоугольник, эллипс).

6. Для демонстрации возможностей контейнера предусмотреть следующие команды: