From 6ea0a1f5bd30a231dc047c7f741a0da32bf2d206 Mon Sep 17 00:00:00 2001 From: Saeed Jamali Date: Mon, 27 Apr 2026 19:22:13 +0330 Subject: [PATCH 1/9] implement todos in vehicle.java --- src/main/java/org/model/Vehicle.java | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/model/Vehicle.java b/src/main/java/org/model/Vehicle.java index 70615a9..72d70ef 100644 --- a/src/main/java/org/model/Vehicle.java +++ b/src/main/java/org/model/Vehicle.java @@ -20,14 +20,37 @@ public abstract class Vehicle { this.mileage = mileage; } + public String getBrand() { + return brand; + } + + public String getModel() { + return model; + } + + public int getYear() { + return year; + } + + public double getMileage() { + return mileage; + } + // TODO: Create getters for all fields + public void addMileage(double km) { + if (km < 0) { + System.out.println("error"); + return; + } + this.mileage += km; + } // TODO: Implement addMileage(double km) // If km is negative → print error // Otherwise increase mileage + public abstract String getEnergyType(); // TODO: Declare abstract method getEnergyType() - public void basicInfo() { System.out.println( year + " " + brand + " " + model + -- 2.54.0 From 86e0ce218a5bcb350bd4256a622389055eedb723 Mon Sep 17 00:00:00 2001 From: Saeed Jamali Date: Mon, 27 Apr 2026 19:47:37 +0330 Subject: [PATCH 2/9] implement todo tasks in Car.java --- src/main/java/org/model/Car.java | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/model/Car.java b/src/main/java/org/model/Car.java index 74836b5..bbc6d51 100644 --- a/src/main/java/org/model/Car.java +++ b/src/main/java/org/model/Car.java @@ -17,16 +17,29 @@ public abstract class Car extends Vehicle implements Serviceable { public Car(String brand, String model, int year, double mileage, int seats) { - + super(brand, model, year, mileage); // TODO: Call super constructor this.seats = seats; } + @Override + public String getEnergyType() { + return "Unknown"; + } // TODO: Override getEnergyType() → return "Unknown" + @Override + public void showDetails() { + System.out.println("Car details: brand: " + this.getBrand() + ", model: " + + this.getModel() + ", year: " + this.getYear() + ", mileage: " + + this.getMileage() + ", number of seats: " + this.seats); + } // TODO: Override showDetails() // Print brand, model, year, mileage, and number of seats + public Boolean needService(Vehicle v) { + return v.getMileage() > 10000; + } /* * Implement Serviceable methods: * @@ -34,8 +47,11 @@ public abstract class Car extends Vehicle implements Serviceable { * - Check the mileage of the current car * - If mileage > 10000 return true * - Otherwise return false - * - * performService(): + */ + public void performService() { + System.out.println("General car service completed"); + } + /* performService(): * - Print: "General car service completed" */ } -- 2.54.0 From 543ea063a7d025a062671ba33dc5a406a7aba497 Mon Sep 17 00:00:00 2001 From: Saeed Jamali Date: Mon, 27 Apr 2026 20:03:23 +0330 Subject: [PATCH 3/9] fix bug: needService method type should have been boolean --- src/main/java/org/model/Car.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/model/Car.java b/src/main/java/org/model/Car.java index bbc6d51..8c93b47 100644 --- a/src/main/java/org/model/Car.java +++ b/src/main/java/org/model/Car.java @@ -37,7 +37,7 @@ public abstract class Car extends Vehicle implements Serviceable { // TODO: Override showDetails() // Print brand, model, year, mileage, and number of seats - public Boolean needService(Vehicle v) { + public boolean needService(Vehicle v) { return v.getMileage() > 10000; } /* -- 2.54.0 From 3d38464d34644f091a2bc7771deb4806c0889d2f Mon Sep 17 00:00:00 2001 From: Saeed Jamali Date: Mon, 27 Apr 2026 20:09:10 +0330 Subject: [PATCH 4/9] implement all todo tasks in ElectricCar.java --- src/main/java/org/model/ElectricCar.java | 25 +++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/model/ElectricCar.java b/src/main/java/org/model/ElectricCar.java index 2ee9bd8..840edef 100644 --- a/src/main/java/org/model/ElectricCar.java +++ b/src/main/java/org/model/ElectricCar.java @@ -26,13 +26,36 @@ public class ElectricCar extends Car implements Chargeable { this.batteryCapacity = batteryCapacity; this.chargeLevel = chargeLevel; } - + public boolean needsService(Vehicle v) { + return v.getMileage() > 8000; + } + public void performService() { + System.out.println("Battery system checked"); + this.chargeLevel = 100; + } + @Override + public String getEnergyType() { + return "Electric"; + } // TODO: Override getEnergyType() → return "Electric" + @Override + public void showDetails() { + super.showDetails(); + System.out.println("Battery capacity: " + this.batteryCapacity + ", Charge level: " + + this.chargeLevel); + } // TODO: Override showDetails() // Call super.showDetails() // Print battery capacity and charge level + public void charge(double amount) { + if (amount > 0 && this.chargeLevel + amount <= 100) { + this.chargeLevel += amount; + } else if (amount > 0 && this.chargeLevel + amount > 100) { + this.chargeLevel = 100; //if input amount causes the battery to charge pass 100%, we set it to 100%. + } + } // TODO: Implement charge(double amount) // Validate negative // Cap at 100 -- 2.54.0 From e9168db124393b441ef54325b15359533dc678b0 Mon Sep 17 00:00:00 2001 From: Saeed Jamali Date: Mon, 27 Apr 2026 20:40:42 +0330 Subject: [PATCH 5/9] implement todos for GasCar.java --- src/main/java/org/model/GasCar.java | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/main/java/org/model/GasCar.java b/src/main/java/org/model/GasCar.java index 2109f93..fb9f215 100644 --- a/src/main/java/org/model/GasCar.java +++ b/src/main/java/org/model/GasCar.java @@ -27,12 +27,37 @@ public class GasCar extends Car implements Refuelable { this.fuelType = fuelType; } + public boolean needsService(Vehicle v) { + return v.getMileage() > 8000; + } + public void performService() { + System.out.println("Engine oil changed"); + this.fuelLevel = 100; + } + + @Override + public String getEnergyType() { + return this.fuelType + " (Gas)"; + } // TODO: Override getEnergyType() → return fuelType + " (Gas)" + + public void refuel(double amount) { + if (amount > 0 && this.fuelLevel + amount <= 100) { + this.fuelLevel += amount; + } else if (amount > 0 && this.fuelLevel + amount > 100) { + this.fuelLevel = 100; //if input amount causes the fuel to fill pass 100%, we set it to 100%. + } + } // TODO: Implement refuel(double amount) // Validate amount // Cap at 100 + @Override + public void showDetails() { + super.showDetails(); + System.out.println("Feul level: " + this.fuelLevel + ", Feul type: " + this.fuelType); + } // TODO: Override showDetails() // Call super.showDetails() // Print fuel level and fuel type -- 2.54.0 From 16f4df1165f4f725cbd129a55b16ed9405d2f07b Mon Sep 17 00:00:00 2001 From: Saeed Jamali Date: Mon, 27 Apr 2026 20:48:25 +0330 Subject: [PATCH 6/9] implement all tasks and todos inside SportsCar.java --- src/main/java/org/model/SportsCar.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/org/model/SportsCar.java b/src/main/java/org/model/SportsCar.java index 25f5df9..6143ef9 100644 --- a/src/main/java/org/model/SportsCar.java +++ b/src/main/java/org/model/SportsCar.java @@ -23,7 +23,17 @@ public class SportsCar extends GasCar { this.zeroToHundred = zeroToHundred; } + public boolean needsService(Vehicle v) { + return v.getMileage() > 5000; + } + public void performService() { + System.out.println("High-performance brake system checked"); + } + public void showDetails() { + super.showDetails(); + System.out.println("Acceleration time: " + this.zeroToHundred); + } // TODO: Override showDetails() // Call super.showDetails() // Print acceleration time -- 2.54.0 From 01a334043195787bd30ce8269db30f9bffb4d3fb Mon Sep 17 00:00:00 2001 From: Saeed Jamali Date: Mon, 27 Apr 2026 21:43:16 +0330 Subject: [PATCH 7/9] Complete inspect method of vehicle inspector class. --- src/main/java/org/model/HybridCar.java | 4 ++++ src/main/java/org/util/VehicleInspector.java | 10 ++++++++++ 2 files changed, 14 insertions(+) create mode 100644 src/main/java/org/model/HybridCar.java diff --git a/src/main/java/org/model/HybridCar.java b/src/main/java/org/model/HybridCar.java new file mode 100644 index 0000000..cc5ec16 --- /dev/null +++ b/src/main/java/org/model/HybridCar.java @@ -0,0 +1,4 @@ +package org.model; + +public class HybridCar { +} diff --git a/src/main/java/org/util/VehicleInspector.java b/src/main/java/org/util/VehicleInspector.java index c83c420..2b69c32 100644 --- a/src/main/java/org/util/VehicleInspector.java +++ b/src/main/java/org/util/VehicleInspector.java @@ -1,6 +1,9 @@ package org.util; import org.*; +import org.model.ElectricCar; +import org.model.GasCar; +import org.model.SportsCar; import org.model.Vehicle; /* @@ -14,6 +17,13 @@ public class VehicleInspector { v.basicInfo(); + if (v instanceof ElectricCar) { + System.out.println("Check battery system"); + } else if (v instanceof SportsCar) { + System.out.println("Check brakes and performance"); + } else if (v instanceof GasCar) { + System.out.println("Check engine and oil"); + } // TODO: // If ElectricCar → print "Check battery system" // If SportsCar → print "Check brakes and performance" -- 2.54.0 From 54f2e13683a66c852eca762bc0a3d3be9df285f2 Mon Sep 17 00:00:00 2001 From: Saeed Jamali Date: Mon, 27 Apr 2026 21:44:27 +0330 Subject: [PATCH 8/9] implement bonus task (HybeidCar.java) --- src/main/java/org/model/HybridCar.java | 42 +++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/model/HybridCar.java b/src/main/java/org/model/HybridCar.java index cc5ec16..0ec7097 100644 --- a/src/main/java/org/model/HybridCar.java +++ b/src/main/java/org/model/HybridCar.java @@ -1,4 +1,44 @@ package org.model; -public class HybridCar { +import org.behavior.Chargeable; +import org.behavior.Refuelable; + +public class HybridCar extends Car implements Chargeable, Refuelable { + private int batteryCapacity; + private double chargeLevel; + private double fuelLevel; + private String fuelType; + + public HybridCar(String brand, String model, int year, double mileage, + int seats, int batteryCapacity, double chargeLevel, + double fuelLevel, String fuelType) { + super(brand, model, year, mileage, seats); + this.batteryCapacity = batteryCapacity; + this.chargeLevel = chargeLevel; + this.fuelLevel = fuelLevel; + this.fuelType = fuelType; + } + + public boolean needsService(Vehicle v) { + return v.getMileage() > 10000; + } + public void performService() { + System.out.println("Engine oil changed and battery system checked"); + this.chargeLevel = 100; + this.fuelLevel = 100; + } + public void charge(double amount) { + if (amount > 0 && this.chargeLevel + amount <= 100) { + this.chargeLevel += amount; + } else if (amount > 0 && this.chargeLevel + amount > 100) { + this.chargeLevel = 100; //if input amount causes the battery to charge pass 100%, we set it to 100%. + } + } + public void refuel(double amount) { + if (amount > 0 && this.fuelLevel + amount <= 100) { + this.fuelLevel += amount; + } else if (amount > 0 && this.fuelLevel + amount > 100) { + this.fuelLevel = 100; //if input amount causes the fuel to fill pass 100%, we set it to 100%. + } + } } -- 2.54.0 From c65c28290bd998340117b2aabf34430d5d9d3553 Mon Sep 17 00:00:00 2001 From: Saeed Jamali Date: Mon, 27 Apr 2026 21:45:22 +0330 Subject: [PATCH 9/9] Implement main file as instructions --- src/main/java/org/Main.java | 59 ++++++++++++++++++++++++++++++------- 1 file changed, 49 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/Main.java b/src/main/java/org/Main.java index 7a3d8c8..3131d7b 100644 --- a/src/main/java/org/Main.java +++ b/src/main/java/org/Main.java @@ -1,8 +1,30 @@ 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; + +import java.util.ArrayList; + public class Main { public static void main(String[] args) { + ElectricCar tesla = new ElectricCar( + "Tesla", "Model S", 2022, 1000, + 100, 550, 50 // batteryCapacity, range + ); + GasCar toyota = new GasCar( + "Toyota", "Corolla", 2018, 85000, + 5, 50, "Petrol" // seats, fuelCapacity, fuelType + ); + + SportsCar ferrari = new SportsCar( + "Ferrari", "F8 Tributo", 2021, 12000, + 2, 3.9, "oil", 710 // seats, engineSize, horsepower + ); // ============================================================ // TODO 1: // Create one instance of each vehicle type: @@ -18,9 +40,10 @@ public class Main { // ============================================================ - - - + ArrayList vehicles = new ArrayList<>(); + vehicles.add(tesla); + vehicles.add(toyota); + vehicles.add(ferrari); // ============================================================ // TODO 2: // Create an array of Vehicle: @@ -35,7 +58,10 @@ public class Main { - + for (Vehicle v: vehicles) { + v.basicInfo(); + System.out.print("\n"); + } // ============================================================ // TODO 3: // Loop through the Vehicle[] array and: @@ -50,7 +76,9 @@ public class Main { - + for (Vehicle v: vehicles) { + VehicleInspector.inspect(v); + } // ============================================================ // TODO 4: // Use VehicleInspector to inspect each vehicle: @@ -65,7 +93,10 @@ public class Main { - + ArrayList serviceables= new ArrayList<>(); + serviceables.add(tesla); + serviceables.add(toyota); + serviceables.add(ferrari); // ============================================================ // TODO 5: // Create an array of Serviceable: @@ -83,7 +114,17 @@ public class Main { - + for (Serviceable s: serviceables) { + Vehicle v = (Vehicle) s; + if(s.needsService(v)) { + System.out.println("Brand: " + v.getBrand() +", model: " + + v.getModel()); + s.performService(); + } else { + System.out.println("The car does not need service"); + } + System.out.print("\n"); + } // ============================================================ // TODO 6: // Loop through the Serviceable[] array: @@ -107,9 +148,7 @@ public class Main { // ============================================================ - - - + System.out.println("=== Workshop Completed ==="); // ============================================================ // TODO 7 (Optional): // After everything is done, print a final message: -- 2.54.0