49 lines
2.0 KiB
Java
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 ===");
|
|
}
|
|
}
|