Упражнение 2
Указатели, класове и наследяване
Задача 1. Да се напише клас Car
за описание на лек автомобил с данна марката на автомобила,
член-функции и други данни по избор.
Да се напише клас Student който да
съхранява име, фамилия, факултетен номер (цяло число) и лек
автомобил (указател към обекг от клас Car)
на студент от НБУ. Да се напишат:
- член-функции за достъп до данните;
- член-функция за добавяне или смяна на автомобила на студента;
- член-функция за отпечатване на данните на студента.
Да се прочете вход с данни за студенти, като се създава вектор от
указатели. Да се напише функция за отпечатване на данните за всички
студенти.
Да се демонстрират всички написани функции.
Примерен вход:
Kiril Vuchkov 45353 Golf
Ivan Stoianov 55325 -
Nikolay Kirov 45235 Peugeot
Примерно решение на задачата: 2_1.cpp,
2_1a.cp, 2_1b.cp
Задача 2. Да се дефинират:
- базов клас Person с два
членове-данни: име и фамилия, член-функции за достъп до
данните, член-функции read и write за четене и писане на данните.
- производен клас Student с
член-данна факултетен номер (цяло число), член-функция за достъп до
данните и член-функции read и write за четене и писане на данните на
обект от този клас.
Да се напише функция за проверка дали двама души имат една и съща
фамилия и да се тества тази функция с обекти от двата класа.
Да се демонстрират всички написани функции.
Примерно решение на задачата: 2_2.cpp,
2_2a.cp
Задача 3. Да се напише
програма за йерархията от класове 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
Примерно решение: 2_3.cpp, 2_3a.cp