Упражнение 3
Полиморфизъм, абстрактни класове
Задача 1.
Да се реализира йерархия от класовете Triangle,
Circle и Rectangle
с абстрактен базов клас Shape.
Двете напълно виртуални функции perimeter
(пресмята обиколка) и area
(пресмята лице) да се реализират в производните класове (виж
лекцията).
За клас Triangle да се добави:
- конструктор по подразбиране, който конструира равностранен
триъгълник със страна 1;
- член-функция за отпечатване на данните за триъгълника;
- член-функция за проверка дали триъгълникът е правоъгълен.
За клас Circle да
се добави:
- конструктор по подразбиране, който конструира окръжност с радиус
1;
- член-функция за увеличаване на радиуса с 1.
За клас Rectangle да
се добави:
- конструктор по подразбиране, който конструира квадрат със страна
1;
- член-функция за проверка дали правоъгълника е квадрат.
Да се прочете файл с фигури (виж примера), да се направи
полиморфна колекция - вектор с указатели. Към получения вектора да
се добави по една фигура от трите вида, конструирана с конструктора
по подразбиране. Да се отпечати обиколката и лицето на всяка фигура,
в реда на въвеждането.
Да се демонстрират всички написани функции.
Пример:
Вход
T 10 20 10
R 5 10
C 100
C 1
R 20 20
R 10 30
T 3 4 5
Примерен изход
40 0
30 50
628.319 31415.9
6.28319 3.14159
80 400
80 300
12 6
3 0.433013
6.28319 3.14159
4 1
Примерно решение: 3_1.cpp