From 6cefdec71de410d5a398ca42e4a0352167d59a4b Mon Sep 17 00:00:00 2001 From: mohammadreza Date: Tue, 28 Apr 2026 13:22:11 -0700 Subject: [PATCH] added HybridCar.java --- src/main/java/org/Main.java | 24 +++++-- src/main/java/org/model/HybridCar.java | 75 ++++++++++++++++++++ src/main/java/org/util/VehicleInspector.java | 8 +-- 3 files changed, 96 insertions(+), 11 deletions(-) create mode 100644 src/main/java/org/model/HybridCar.java diff --git a/src/main/java/org/Main.java b/src/main/java/org/Main.java index 4885a97..13e8f5a 100644 --- a/src/main/java/org/Main.java +++ b/src/main/java/org/Main.java @@ -1,10 +1,7 @@ package org; import org.behavior.Serviceable; -import org.model.ElectricCar; -import org.model.GasCar; -import org.model.SportsCar; -import org.model.Vehicle; +import org.model.*; import org.util.VehicleInspector; import java.util.Objects; @@ -20,10 +17,12 @@ public class Main { SportsCar DodgeDemon = new SportsCar("Dodge", "Challenger Demon", 2018, 5000, 5, 70, "gasoline", 2.3); + HybridCar Lamborghini = new HybridCar("Lamborghini", "Aventador J (Hybrid)",2024, 1200, 2, 25.0, 60.0); + Scanner scanner = new Scanner(System.in); - Vehicle[] vehicles = {tesla, Toyota, DodgeDemon}; - Serviceable[] serviceable = {tesla, Toyota, DodgeDemon}; + Vehicle[] vehicles = {tesla, Toyota, DodgeDemon, Lamborghini}; + Serviceable[] serviceable = {tesla, Toyota, DodgeDemon, Lamborghini}; while (true) { @@ -98,6 +97,8 @@ public class Main { } else if (Objects.equals(myCar, "Dodge")) { DodgeDemon.addMileage(D); + } else if (Objects.equals(myCar, "Lamborghini")) { + Lamborghini.addMileage(D); } else { System.out.println("invalid name for a car"); } @@ -122,7 +123,16 @@ public class Main { } else if (Objects.equals(myCar, "Dodge")) { DodgeDemon.refuel(D); - }else { + } else if (Objects.equals(myCar, "Lamborghini")) { + + System.out.println("choose one: 1.gasoline or 2.electric"); + int n = scanner.nextInt(); + if (n == 1) + Lamborghini.refuel(D); + else if (n == 2) + Lamborghini.charge(D); + + } else { System.out.println("invalid name for a car"); } diff --git a/src/main/java/org/model/HybridCar.java b/src/main/java/org/model/HybridCar.java new file mode 100644 index 0000000..307dac2 --- /dev/null +++ b/src/main/java/org/model/HybridCar.java @@ -0,0 +1,75 @@ +package org.model; + +import org.behavior.Chargeable; +import org.behavior.Refuelable; + +public class HybridCar extends Car implements Refuelable, Chargeable { + + private double fuelLevel; + private double chargeLevel; + + public HybridCar(String brand, String model, int year, double mileage, int seats, double fuelLevel, double chargeLevel) { + super(brand, model, year, mileage, seats); + this.fuelLevel = fuelLevel; + this.chargeLevel = chargeLevel; + } + + + @Override + public String getEnergyType() { + return "Hybrid (Gas + Gasoline)"; + } + + @Override + public void showDetails() { + super.showDetails(); + System.out.println(" | fuel level: " + fuelLevel + " | charge level: " + chargeLevel); + + } + + @Override + public void refuel(double amount) { + if (amount < 0) + System.out.println("This amount is unacceptable."); + if (fuelLevel == 100) + System.out.println("fuel level is already 100%."); + else { + fuelLevel += amount; + if (fuelLevel >= 100) { + fuelLevel = 100; + System.out.println("fuel level reached 100%."); + } else + System.out.println("fuel level increased."); + } + + } + + @Override + public void charge(double amount) { + if (amount < 0) + System.out.println("This amount is unacceptable."); + else { + chargeLevel += amount; + if (chargeLevel >= 100) { + chargeLevel = 100; + System.out.println("Battery fully charged."); + } + else + System.out.println("charge level increased."); + } + + } + + @Override + public boolean needsService(Vehicle v) { + return super.needsService(v); + } + + @Override + public void performService() { + super.performService(); + System.out.println("Engine oil changed and battery system checked"); + this.fuelLevel = 100; + this.chargeLevel = 100; + } +} diff --git a/src/main/java/org/util/VehicleInspector.java b/src/main/java/org/util/VehicleInspector.java index a9fe074..b8fa796 100644 --- a/src/main/java/org/util/VehicleInspector.java +++ b/src/main/java/org/util/VehicleInspector.java @@ -1,10 +1,7 @@ package org.util; import org.*; -import org.model.ElectricCar; -import org.model.GasCar; -import org.model.SportsCar; -import org.model.Vehicle; +import org.model.*; /* * Utility class to inspect vehicles. @@ -33,6 +30,9 @@ public class VehicleInspector { else if (v instanceof GasCar) { System.out.println("Check engine and oil"); + } else if (v instanceof HybridCar) { + + System.out.println("check engine oil and battery system"); } } }