Files
WS-03-advanced-oop-Ramtin/src/main/java/org/model/HybridCar.java
T

86 lines
2.4 KiB
Java

package org.model;
import org.behavior.Chargeable;
import org.behavior.Refuelable;
public class HybridCar extends Car implements Chargeable, Refuelable {
private double fuelLevel;
private final String fuelType;
private final 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 (Electric + " + fuelType + ")";
}
@Override
public void showDetails() {
super.showDetails();
System.out.println(
"Fuel level: " + fuelLevel +
"| Fuel type: " + fuelType
);
System.out.println(
"Battery capacity: " + batteryCapacity +
"| Charge level: " + chargeLevel
);
}
@Override
public void charge(double amount) {
if (amount <= 0) {
System.out.println("An error occurred while charging the vehicle, value must be bigger than zero, " + amount + " is not");
}
if (chargeLevel + amount > 100) {
System.out.println("An error occurred while charging the vehicle, by adding this amount: " + amount + " vehicle's charge level exceeds battery capacity");
}
chargeLevel += amount;
}
@Override
public void refuel(double amount) {
if (amount <= 0) {
System.out.println("An error occurred while refueling the vehicle, value must be bigger than zero, " + amount + " is not");
}
if (fuelLevel + amount > 100) {
System.out.println("An error occurred while refueling the vehicle, by adding this amount: " + amount + " vehicle's charge level exceeds battery capacity");
}
fuelLevel += amount;
}
@Override
public void performService() {
super.performService();
System.out.println("Engine oil changed and battery system checked");
fuelLevel = 100;
chargeLevel = 100;
}
@Override
public boolean needsService(Vehicle v) {
return getMileage() > 10000;
}
}