-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhometask3.java
125 lines (99 loc) · 2.88 KB
/
hometask3.java
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package SelfAssessment;
abstract class Engine {
public abstract String getType();
}
class CombustionEngine extends Engine {
@Override
public String getType() {
return "Combustion Engine";
}
}
class ElectricEngine extends Engine {
@Override
public String getType() {
return "Electric Engine";
}
}
class HybridEngine extends Engine {
@Override
public String getType() {
return "Hybrid Engine";
}
}
class Manufacture {
private String name;
private String country;
public Manufacture(String name, String country) {
this.name = name;
this.country = country;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
@Override
public String toString() {
return name + " (" + country + ")";
}
}
abstract class Vehicle {
protected Manufacture manufacture;
protected Engine engine;
public Vehicle(Manufacture manufacture, Engine engine) {
this.manufacture = manufacture;
this.engine = engine;
}
public abstract void ShowCharacteristics();
}
class ICEV extends Vehicle {
public ICEV(Manufacture manufacture, Engine engine) {
super(manufacture, engine);
}
@Override
public void ShowCharacteristics() {
System.out.println("ICEV - Manufacture: " + manufacture + ", Engine: " + engine.getType());
}
}
class BEV extends Vehicle {
public BEV(Manufacture manufacture, Engine engine) {
super(manufacture, engine);
}
@Override
public void ShowCharacteristics() {
System.out.println("BEV - Manufacture: " + manufacture + ", Engine: " + engine.getType());
}
}
class HybridV extends Vehicle {
public HybridV(Manufacture manufacture, Engine engine) {
super(manufacture, engine);
}
@Override
public void ShowCharacteristics() {
System.out.println("HybridV - Manufacture: " + manufacture + ", Engine: " + engine.getType());
}
}
public class VehicleManager {
public static void main(String[] args) {
Manufacture toyota = new Manufacture("Toyota", "Japan");
Manufacture tesla = new Manufacture("Tesla", "USA");
Manufacture ford = new Manufacture("Ford", "USA");
Engine combustionEngine = new CombustionEngine();
Engine electricEngine = new ElectricEngine();
Engine hybridEngine = new HybridEngine();
Vehicle[] vehicles = new Vehicle[3];
vehicles[0] = new ICEV(toyota, combustionEngine);
vehicles[1] = new BEV(tesla, electricEngine);
vehicles[2] = new HybridV(ford, hybridEngine);
for (Vehicle vehicle : vehicles) {
vehicle.ShowCharacteristics();
}
}
}