Л.р. № 2. Виртуальные методы, наследование, полиморфизм

Использование конструктора и деструктора, перегрузки функций-членов и инкапсуляции

I. Задан интерфейс класса (в соответствии с вариантом задания).

II. Выполнить:

  1. Дополнить класс недостающими закрытыми свойствами и методами.
  2. Перегрузить конструктор класса.
  3. Один(или несколько) методов реализовать как встроенный.
  4. Выполнить реализацию каждого метода, указанного в описании класса.
  5. Описание класса выполнить в отдельном заголовочном файле (.h), реализации класса – в отдельном исходном файле (.cpp).
  6. Собрать проект, в main() реализовать меню, позволяющее:

создавать массив объектов класса

добавлять в массив новые объекты

удалять из массив объекты

выводить на экран информацию об объекте (обо всех или по номеру)

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

выполнить серию тестов по созданию объектов класса и выполнению действий над ними.

III. Подготовить отчет:

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

2. Листинг описания класса (c комментариями ко всем свойствам и методам).

  1. Листинг реализации класса.
  2. Результаты работы программы проверки класса (какие действия выполнялись, какие результаты были получены).

Л.р. № 2. Виртуальные методы, наследование, полиморфизм

I. Базовый класс для всех вариантов:

class Figure{ int c; // цвет bool visible;protected: int x,y; // базовая точка virtual void draw() const; public: Figure(int c, int x, int y); ~Figure(); void move(int dx, int dy); // сместить фигуру на (dx,dy) – только видимую void setBorderColor(int c); // установить цвет фигуры – только видимой int getBorderColor() const; // получить цвет void setVisible(bool isVisible = true); // показать/спрятать фигуру bool isVisible() const; // признак видимости virtual void calcParams(float& perimeter, float& area) const; // вычислить периметр и площадь фигуры};

II. Выполнить:

1. Реализацию методов класса Figure.

2. Скорректировать интерфейс Figure, чтобы методы calcParams и draw стали чисто виртуальными.

3. Определить производный класс (в соответствии с вариантом задания).

4. Определить дополнительный метод в производном классе для изменения размеров:

void setSizes(длина, высота);
или void setSizes(длина, высота, радиус);
или void setSizes(радиус, угол1, угол2);
и т.д.,(т.е. задавать значения, указываемые в аргументах конструктора, начиная с 4-го)

5. От написанного класса произвести новый дочерний класс - закрашенная фигура.
Например, закрашенный ромб (FilledRomb ← Romb ← Figure).

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

7. Определить дополнительный метод у нового дочернего класса для изменения цвета заполнения:

void setFillColor(int c);

8. Переопределить у нового дочернего класса метод изменения цвета границы:

void setBorderColor(int c);

(если новый цвет границы совпадает с текущим цветом заполнения, то цвет границы не изменять)

9. Правильно реализовать деструкторы в родительских и всех производных классах (при необходимости скорректировать интерфейс базового класса).

10. При тестировании объектов классов продемонстрировать полиморфизм (при необходимости скорректировать интерфейс базового класса).

11. При тестировании динамически создать две фигуры 2 разных классов, вызвать все методы.

III. Подготовить отчет.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: