From 79bb92299c67e2fce2ba0afce5328b590e2209b7 Mon Sep 17 00:00:00 2001 From: Matin-Ardestani Date: Wed, 29 Apr 2026 00:47:19 +0330 Subject: [PATCH] Add HybridCar class (Bonus) --- src/main/java/org/model/HybridCar.java | 63 ++++++++++++++++++++++++++ 1 file changed, 63 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..8c547c9 --- /dev/null +++ b/src/main/java/org/model/HybridCar.java @@ -0,0 +1,63 @@ +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 "Gas & Electricity"; + } + + @Override + public void refuel(double amount) { + if(fuelLevel + amount <= 100){ + fuelLevel += amount; + } + } + + @Override + public void charge(double amount) { + if(amount < 0){ + System.out.println("Error: can\'t add negative number!"); + return; + } + if(chargeLevel + amount <= 100){ + chargeLevel += amount; + } + } + + @Override + public void showDetails() { + super.showDetails(); + System.out.printf(", Fuel Type: %s, Fuel Level: %s, Battery Capacity: %s, Charge Level: %s\n", + fuelType, fuelLevel, batteryCapacity, 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"); + fuelLevel = 100; + chargeLevel = 100; + } +}