Упражнение 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