Thanks :)
package com.codegym.task.task29.task2909.car;
import java.util.Date;
public abstract class Car {
static public final int TRUCK = 0;
static public final int SEDAN = 1;
static public final int CABRIOLET = 2;
protected static final int MAX_TRUCK_SPEED = 80;
protected static final int MAX_SEDAN_SPEED = 120;
protected static final int MAX_CABRIOLET_SPEED = 90;
double fuel;
public double summerFuelConsumption;
public double winterFuelConsumption;
public double winterWarmingUp;
private int type;
private boolean driverAvailable;
private int numberOfPassengers;
protected Car(int type, int numberOfPassengers) {
this.type = type;
this.numberOfPassengers = numberOfPassengers;
}
public void fill(double numberOfGallons) throws Exception {
if (numberOfGallons < 0)
throw new Exception();
fuel += numberOfGallons;
}
public boolean isSummer(Date date, Date summerStart, Date summerEnd) {
return (date.before(summerEnd) && date.after(summerStart));
}
public double getWinterConsumption(int length) {
return this.winterFuelConsumption * length + winterWarmingUp;
}
public double getSummerConsumption(int length) {
return this.summerFuelConsumption * length;
}
public double getTripConsumption(Date date, int length, Date summerStart, Date summerEnd) {
return isSummer(date, summerStart, summerEnd) ? getSummerConsumption(length) : getWinterConsumption(length);
}
public static Car create(int type, int numberOfPassengers) {
switch (type) {
case TRUCK:
return new Truck(numberOfPassengers);
case SEDAN:
return new Sedan(numberOfPassengers);
case CABRIOLET:
return new Cabriolet(numberOfPassengers);
}
return null;
}
private boolean canPassengersBeCarried() {
if (isDriverAvailable() && fuel != 0)
return true;
return false;
}
public int getNumberOfPassengersThatCanBeCarried() {
if (this.canPassengersBeCarried())
return numberOfPassengers;
return 0;
}
public boolean isDriverAvailable() {
return driverAvailable;
}
public void setDriverAvailable(boolean driverAvailable) {
this.driverAvailable = driverAvailable;
}
public void startMoving() {
if (numberOfPassengers > 0) {
fastenPassengerBelts();
}
fastenDriverBelt();
}
public void fastenPassengerBelts() {
}
public void fastenDriverBelt() {
}
public abstract int getMaxSpeed();
}