diff --git a/src/main/java/org/example/Main.java b/src/main/java/org/example/Main.java index 58e222f..688fed8 100644 --- a/src/main/java/org/example/Main.java +++ b/src/main/java/org/example/Main.java @@ -1,7 +1,130 @@ package org.example; -//TIP To Run code, press or -// click the icon in the gutter. +import org.example.model.*; +import org.example.util.VehicleInspector; +import org.example.behavior.Serviceable; + public class Main { - public static void main(String[] args) {} -} \ No newline at end of file + 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(...); + // ============================================================ + + + + + + // ============================================================ + // 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 ==="); + // + // ============================================================ + + + + + + } +}