Files
WS-03-advanced-oop/src/main/java/org/Main.java
T

49 lines
2.0 KiB
Java

package org;
import org.model.*;
import org.behavior.Serviceable;
import org.util.*;
public class Main{
public static void main(String[] args) {
// Creating instances for each car type with realistic values
ElectricCar tesla =new ElectricCar("Tesla", "Model S", 2022, 9000, 5, 100, 45);
GasCar toyota= new GasCar("Toyota", "Corolla", 2018, 15000, 5, 60, "Petrol");
SportsCar ferrari =new SportsCar("Ferrari", "F8 Tributo", 2021, 6000, 2, 40, "Petrol", 2.9);
//Demonstrating polymorphism by storing different subclasses in a Vehicle array
Vehicle[] vehicles = { tesla, toyota, ferrari };
// Looping through vehicles to display basic inherited info
System.out.println("--- Basic Vehicle Info ---");
for (Vehicle v : vehicles) {
v.basicInfo();
System.out.println();
}
//Using the inspector utility to perform type-checking with instanceof
System.out.println("--- Vehicle Inspection ---");
for (Vehicle v : vehicles) {
VehicleInspector.inspect(v);
System.out.println();
}
// Demonstrating interface-based polymorphism by storing cars in a Serviceable array
Serviceable[] serviceables = { tesla, toyota, ferrari };
//Iterating through serviceables, casting to Vehicle to check mileage limits, and performing services
System.out.println("--- Service Management System ---");
for (Serviceable s : serviceables) {
Vehicle v = (Vehicle) s;
if (s.needsService(v)) {
System.out.println(v.getBrand() + " " + v.getModel() + " needs service.");
s.performService();
} else {
System.out.println(v.getBrand() + " " + v.getModel() + " is in good condition. No service needed.");
}
System.out.println();
}
//Final workshop completion message
System.out.println("=== Workshop Completed ===");
}
}