Пункт 2 : Необходимо заменить в методе printUsers() класса UserHelper повторяющийся код вызовами метода printInfo().
Пункт 6 : Необходимо переписать метод calculateAverageAge() класса UserHelper без использования переменной age. Переменную age - удалить.
Пункт 7 : Метод calculateRate() класса UserHelper не должен изменять входные параметры.
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;
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 Car (int numberOfPassengers){
this.numberOfPassengers = numberOfPassengers;
}
public static Car create(int type, int numberOfPassengers){
Car car = null;
if (type >= 0 && type < 3){
if (type == 0) car = new Truck(numberOfPassengers);
if (type == 1) car = new Sedan(numberOfPassengers);
if (type == 2) car = new Cabriolet(numberOfPassengers);
}
return car;
}
public void fill(double numberOfLiters) throws Exception {
if (numberOfLiters < 0) throw new Exception();
fuel += numberOfLiters;
}
public double getTripConsumption(Date date, int length, Date SummerStart, Date SummerEnd) {
return isSummer(date, SummerStart, SummerEnd) ? getSummerConsumption(length) : getWinterConsumption(length);
}
public int getNumberOfPassengersCanBeTransferred() {
if (!canPassengersBeTransferred()) return 0;
return numberOfPassengers;
}
public boolean isDriverAvailable() {
return driverAvailable;
}
public void setDriverAvailable(boolean driverAvailable) {
this.driverAvailable = driverAvailable;
}
public void startMoving() {
if (numberOfPassengers > 0) fastenPassengersBelts();
fastenDriverBelt();
}
private boolean canPassengersBeTransferred() {
return (isDriverAvailable() && fuel > 0);
}
public void fastenPassengersBelts() {
}
public void fastenDriverBelt() {
}
public abstract int getMaxSpeed();
public boolean isSummer(Date date, Date summerStart, Date summerEnd){
return !(date.before(summerStart) || date.after(summerEnd));
}
public double getWinterConsumption(int length){
return winterFuelConsumption * length + winterWarmingUp;
}
public double getSummerConsumption(int length){
return summerFuelConsumption * length;
}
}