diff --git a/src/main/java/org/model/ElectricCar.java b/src/main/java/org/model/ElectricCar.java index 3f46059..065ee83 100644 --- a/src/main/java/org/model/ElectricCar.java +++ b/src/main/java/org/model/ElectricCar.java @@ -56,4 +56,16 @@ public class ElectricCar extends Car implements Chargeable { chargeLevel += amount; } } + + @Override + public void performService() { + super.performService(); + System.out.println("Electric engine and oil checked"); + this.chargeLevel = 100; + } + + @Override + public boolean needsService(Vehicle v) { + return getMileage() > 10000; + } } diff --git a/src/main/java/org/model/HybridCar.java b/src/main/java/org/model/HybridCar.java new file mode 100644 index 0000000..0aac32f --- /dev/null +++ b/src/main/java/org/model/HybridCar.java @@ -0,0 +1,71 @@ +package org.model; + +import org.behavior.Chargeable; +import org.behavior.Refuelable; + +public class HybridCar extends Car implements Refuelable, Chargeable { + + private double fuelLevel; + private String fuelType; + private int batteryCapacity; + private double chargeLevel; + + public HybridCar(String brand, String model, int year, double mileage, int seats, double fuelLevel, String fuelType, int batteryCapacity, double chargeLevel) { + + super(brand, model, year, mileage, seats); + this.fuelLevel = fuelLevel; + this.fuelType = fuelType; + this.batteryCapacity = batteryCapacity; + 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 boolean needsService(Vehicle v) { + return v.getMileage() > 10000; + } + + @Override + public void performService() { + System.out.println("Engine oil changed and battery system checked"); + + this.fuelLevel = 100; + this.chargeLevel = 100; + } + + + @Override + public void charge(double amount) { + if(amount < 0) + System.out.println("amount unacceptable"); + else{ + if (chargeLevel + amount > 100) + chargeLevel = 100; + else + chargeLevel += amount; + } + } + + @Override + public void refuel(double amount) { + if(amount < 0) + System.out.println("amount unacceptable"); + else{ + if (fuelLevel + amount > 100) + fuelLevel = 100; + else + fuelLevel += amount; + } + } +} +