package org.model; /* * ElectricCar extends Car. * It already inherits Serviceable from Car. * * Service logic for ElectricCar: * - needsService(): return true if mileage > 8000 * - performService(): * Print "Battery system checked" * Reset chargeLevel to 100 */ import org.behavior.Chargeable; public class ElectricCar extends Car implements Chargeable { private int batteryCapacity; private double chargeLevel; public ElectricCar(String brand, String model, int year, double mileage, int seats, int batteryCapacity, double chargeLevel) { super(brand, model, year, mileage, seats); this.batteryCapacity = batteryCapacity; this.chargeLevel = chargeLevel; } @Override public String getEnergyType(){ return "Electric"; } @Override public void charge(double amount) { if(amount<0){ System.out.println("Error: Cannot charge with a negative amount."); return; } this.chargeLevel += amount; if (this.chargeLevel > 100) { this.chargeLevel = 100; System.out.println("Battery is fully charged."); } else { System.out.println("Charged " + amount + "Current charge level: " + this.chargeLevel); } } @Override public void performService() { System.out.println("Battery system checked"); chargeLevel = 100; System.out.println("Reset chargeLevel to 100"); } @Override public int getChargeLevel() { return 0; } @Override public int getFuelLevel() { return 0; } @Override public boolean needService() { return false; } @Override public boolean needsService(Vehicle v) { return this.getMileage() > 8000; } @Override public void showDetails() { super.showDetails(); System.out.println("Battery Capacity: " + this.batteryCapacity); System.out.println("Charge Level: " + this.chargeLevel); } }