CITB205 ООП - Практика (Лаб.
упражнения)
22.11.202, 9:40
Зддача 1.
Да се дефинира клас-шаблон Segment за отсечка в равнината със
зададени координати на двата й върха. Параметър на шаблона да бъде
числов тип (int, long, double) за тип на координатите. Да се
използва динамичен масив за съхраняване на тези координати.
Да се напише функця за пресмятане на дължината на отсечката
(число тип double).
Да се предефинират следните операции:
- Операции > за сравняване на две отсечки според тяхната дължина.
- Операция изходен поток <<
- Операция входен поток >>
- Операция == за еднаквост на две отсечки (които може да са
построени по различен начин).
- Операция -- за успоредно прместване на отсечката (транслация) до
достигане на единия й край в точка (0,0).
Да се дефинират "големите три" за управление на паметта. Да се
демонстрира:
(a) разликата между инициализация:
Segment<int> s;
Segment<int> t = s;
и присвояване:
Segment<int> s(0, 9, 4, 0);
Segment<int> t;
s = t;
(b) Фактът, че конструираните обекти се унищожават
автоматично.
(c) Фактът, че конструкторът за копиране се вика когато обект
се предава на функция по стойност (с параметър-променлива).
(d) Фактът, че конструкторът за копиране не се вика когато
обект се предава на функция чрез псевдоним.
(e) Фактът, че конструкторът за копиране се вика при връщане
на стойност на функция.
Да се демонстрират всички написани функции и предефинирани
операции.
Да се демонстира системата за изхвърляне на изключение -
отсечка с дължина 0 и се напише клас за това изключение.
Зддача 2.
Да се създаде йерархия от класове с базов клас Car и производни
класове ElectroCar и DiеselCar. Класът Car да има данна марката на
автомобил - низ, състоящ се от две части: име на производител и
модел. Класът ElectroCar да съдържа данна за максимален пробег с
едно зареждане - цяло число, а класът DiеselCar - данна за разход на
гориво за 100 км - десетична дроб.
От стандартния вход да се прочетат данни за автомобили, да се
направи полиморфен вектор с указатели към обекти в динамичната памет
от съответния клас (ElectroCar или DiеselCar). Да се напише функция
company за отпечатване на списък с всички автомобили от зададен
производител. Да се спази формата за печат както е даден в примера.
Примерен вход за програмата:
E Tesla AB 1000
D Peugeot W300 4.8
D Alamat 7000 5.6
E Emotiom A1 1200
D Emotion B1 5.1
Резултат от извикване на функцията company("Emotion") за
примерния вход.
Emotiom A1: maximum mileage 1200
Emotion B1: fuel consumption 5.1
Зддача 3.
Напишете програма copyfile която копира файл. Имената на файловете
се задават на командния ред.
Например
copyfile report.txt report.sav
прави копие на файла report.txt и го записва като report.sav.