forked from coders-school/Cars
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.cpp
More file actions
49 lines (44 loc) · 1.36 KB
/
main.cpp
File metadata and controls
49 lines (44 loc) · 1.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <iostream>
#include "Car.hpp"
#include "ElectricCar.hpp"
#include "HybridCar.hpp"
#include "PetrolCar.hpp"
int main() {
Car* car = nullptr;
std::cout << std::endl << "OPEL" << std::endl;
PetrolCar opel(std::make_unique<PetrolEngine>(120, 1800, 6));
car = &opel;
car->accelerate(50);
car->brake();
try {
car->accelerate(-900);
} catch (std::range_error& rerr) {
std::cerr << rerr.what() << '\n';
} catch (std::logic_error& err) {
std::cerr << err.what() << '\n';
}
car->refill();
std::cout << '\n';
std::cout << std::endl << "NISSAN" << std::endl;
ElectricCar nissan(std::make_unique<ElectricEngine>(130, 650));
car = &nissan;
car->refill();
car->accelerate(80);
car->getSpeed();
car->changeEngine(std::make_unique<ElectricEngine>(150, 700)); // Changing an engine during driving is not safe
car->turnLeft();
std::cout << '\n';
std::cout << std::endl << "TOYOTA" << std::endl;
HybridCar toyota(std::make_unique<PetrolEngine>(80, 1400, 5), std::make_unique<ElectricEngine>(100, 540));
car = &toyota;
car->accelerate(100);
car->brake();
car->refill();
std::cout << '\n';
try {
PetrolEngine engine(100, 2000, 6);
engine.changeGear(-1);
} catch (std::logic_error& err) {
std::cerr << err.what() << '\n';
}
}