Доброго времени суток. По-моему мнению решение соответствует условию, Валли считает иначе. Как его победить?)
package com.javarush.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;
static public final int MAX_TRUCK_SPEED = 80;
static public final int MAX_SEDAN_SPEED = 120;
static public 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 numberOfLiters) throws Exception {
if (numberOfLiters < 0)
throw new Exception();
else
fuel += numberOfLiters;
}
public double getTripConsumption(Date date, int length, Date SummerStart, Date SummerEnd) {
double consumption;
if (isSummer(date,SummerStart,SummerEnd)){
consumption = getSummerConsumption(length);
}else
{
consumption = getWinterConsumption(length);
}
/*
if (date.before(SummerStart) || date.after(SummerEnd)) {
consumption = length * winterFuelConsumption + winterWarmingUp;
} else {
consumption = length * summerFuelConsumption;
}*/
return consumption;
}
public int getNumberOfPassengersCanBeTransferred() {
// if (canPassengersBeTransferred())
//
// return numberOfPassengers;
// else return 0;
if (canPassengersBeTransferred()) {
return numberOfPassengers;
}else {
return 0;}
}
public boolean isDriverAvailable() {
return driverAvailable;
}
public void setDriverAvailable(boolean driverAvailable) {
this.driverAvailable = driverAvailable;
}
public void startMoving() {
if (numberOfPassengers > 0) {
fastenPassengersBelts();
}
fastenDriverBelt();
}
public static Car create(int type, int numberOfPassengers){
switch (type){
case 0:
return new Truck(0);
case 1:
return new Sedan(1);
case 2:
return new Cabriolet(2);
}
return null;//new Car(type,numberOfPassengers);
}
public boolean isSummer(Date date , Date summerStart, Date summerEnd){
// if (date.getDate() >= summerStart.getDate() && date.getDate() <= summerEnd.getDate()) return true;
if (date.before(summerStart) || date.after(summerEnd)) return false;
else
return true;
}
public double getWinterConsumption(int length)
{
// winterFuelConsumption;
return length * winterFuelConsumption + winterWarmingUp;
}
public double getSummerConsumption(int length)
{
return length * summerFuelConsumption;
}
public void fastenPassengersBelts() {
}
public void fastenDriverBelt() {
}
public abstract int getMaxSpeed() ;
// {
// if (type == TRUCK)
// return MAX_TRUCK_SPEED;
//
// if (type == SEDAN)
// return MAX_SEDAN_SPEED;
// return MAX_CABRIOLET_SPEED;
// }
private boolean canPassengersBeTransferred(){
return isDriverAvailable()&&fuel>0;
// if (isDriverAvailable() && fuel > 0) return true;
// else return false;
}
}