diff --git a/src/main/java/org/Main.java b/src/main/java/org/Main.java index 7a3d8c8..73dfe00 100644 --- a/src/main/java/org/Main.java +++ b/src/main/java/org/Main.java @@ -1,126 +1,56 @@ package org; +import org.behavior.Serviceable; +import org.model.ElectricCar; +import org.model.GasCar; +import org.model.SportsCar; +import org.model.Vehicle; +import org.util.VehicleInspector; + public class Main { public static void main(String[] args) { - // ============================================================ - // TODO 1: - // Create one instance of each vehicle type: - // - ElectricCar - // - GasCar - // - SportsCar - // - // Requirements: - // • Use the constructors you created in each class. - // • Provide realistic values (brand, model, year, mileage, etc.). - // • Store them in variables such as: - // ElectricCar tesla = new ElectricCar(...); - // ============================================================ + + ElectricCar tesla = new ElectricCar("Tesla", "Model S", 2022, 1000, + 5, 100, 20); + + GasCar toyota = new GasCar("Toyota", "Corolla", 2018, 13000, + 5, 50, "Petrol"); + + SportsCar ferrari = new SportsCar("Ferrari", "F8 Tributo", 2021, 8000, + 2, 100, "Petrol", 2.9); + Vehicle[] vehicles = {tesla, toyota, ferrari}; + for (Vehicle v : vehicles) + { + v.basicInfo(); + System.out.println(); + } + for (Vehicle v : vehicles) + { + VehicleInspector.inspect(v); + } - // ============================================================ - // TODO 2: - // Create an array of Vehicle: - // Vehicle[] vehicles = { ... }; - // - // This array MUST contain the objects created above. - // This demonstrates **polymorphism** because all different - // subclasses (ElectricCar, GasCar, SportsCar) are stored - // as their parent type (Vehicle). - // ============================================================ - - - - - - // ============================================================ - // TODO 3: - // Loop through the Vehicle[] array and: - // • Call v.basicInfo(); - // • Print a blank line after each. - // - // Purpose: - // Demonstrate that all subclasses share the same Vehicle - // behavior and can call inherited methods. - // ============================================================ - - - - - - // ============================================================ - // TODO 4: - // Use VehicleInspector to inspect each vehicle: - // - // VehicleInspector.inspect(v); - // - // Purpose: - // • Demonstrate the use of `instanceof` - // • Show subclass‑specific inspection messages - // ============================================================ - - - - - - // ============================================================ - // TODO 5: - // Create an array of Serviceable: - // Serviceable[] serviceables = { ... }; - // - // This demonstrates **interface‑based polymorphism**. - // Every Car subtype implements Serviceable. - // - // IMPORTANT: - // • You must cast to Vehicle when needed: - // Vehicle v = (Vehicle) s; - // - // ============================================================ - - - - - - // ============================================================ - // TODO 6: - // Loop through the Serviceable[] array: - // - // Steps inside loop: - // - // 1. Cast the current object to Vehicle: - // Vehicle v = (Vehicle) s; - // - // 2. Check: - // if (s.needsService(v)) { ... } - // - // 3. If true: - // - Print a message showing brand + model - // - Call s.performService(); - // - // 4. Otherwise: - // - Print that the car does not need service - // - // Add blank lines between each item for readability. - // ============================================================ - - - - - - // ============================================================ - // TODO 7 (Optional): - // After everything is done, print a final message: - // - // System.out.println("=== Workshop Completed ==="); - // - // ============================================================ - - - + Serviceable[] serviceables = {tesla, toyota, ferrari}; + for (Serviceable s : serviceables) + { + Vehicle v = (Vehicle) s; + if (s.needsService(v)) + { + System.out.println(v.getBrand() + " " + v.getModel()); + s.performService(); + } + else + { + System.out.println(v.getBrand() + " " + v.getModel() + " does not need service."); + } + System.out.println(); + } + System.out.println("=== Workshop Completed ==="); } }