2, 5, 6 пункты не могу пройти, прошу помощи...
2. Необходимо заменить в методе printUsers() класса UserHelper повторяющийся код вызовами метода printInfo().
5. Необходимо переписать метод calculateAverageAge() класса UserHelper без использования переменной age. Переменную age - удалить.
6. Перепиши метод calculateRate() класса UserHelper, чтобы метод не изменял входные параметры, а просто возвращал рассчитанное значение (метод должен возвращать int).
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;
public final int MAX_TRUCK_SPEED = 80;
public final int MAX_SEDAN_SPEED = 120;
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;
//10.1.3. Добавь фабричный статический метод Car create(int type, int numberOfPassengers)
// в класс Car и реализуй его.
public static Car create(int type, int numberOfPassengers){
switch (type){
case 0:{ return new Truck(numberOfPassengers);}
case 1:{ return new Sedan(numberOfPassengers);}
case 2:{ return new Cabriolet(numberOfPassengers);}
}
return null;
}
//10.1. Замена конструктора фабричным методом.
//10.1.1. Объяви классы Truck (грузовик), Sedan (седан) и Cabriolet (кабриолет), унаследованные от Car.
//10.1.2. Добавь в них конструкторы, принимающие int numberOfPassengers.
//10.1.3. Добавь фабричный статический метод Car create(int type, int numberOfPassengers) в класс Car и реализуй его.
//10.1.4. Измени область видимости конструктора класса Car.
protected Car(int type, int numberOfPassengers) {
this.type = type;
this.numberOfPassengers = numberOfPassengers;
}
public void fill(double numberOfLiters) throws Exception {
//11.1. Замена кода ошибки исключением. Перепиши метод заправиться fill(double
//numberOfLiters), чтобы он в случае ошибки кидал исключение Exception.
//Необходимо изменить метод fill(double numberOfLiters) класса Car,
// чтобы он в случае ошибки бросал исключение Exception.
if (numberOfLiters < 0) {
throw new Exception();
// e.printStackTrace();
}
else fuel += numberOfLiters;
}
public double getTripConsumption(Date date, int length, Date SummerStart, Date SummerEnd) {
double consumption;
if (!this.isSummer(date,SummerStart,SummerEnd)) {
consumption = getWinterConsumption(length);
} else {
consumption = getSummerConsumption(length);
}
return consumption;
}
public boolean isSummer(Date date , Date summerStart, Date summerEnd){
return ((date.before(summerEnd)) && (date.after(summerStart)));
}
public double getWinterConsumption(int length){
return length * winterFuelConsumption + winterWarmingUp;
}
public double getSummerConsumption(int length){
return length * summerFuelConsumption;
}
public int getNumberOfPassengersCanBeTransferred() {
if (canPassengersBeTransferred()) {
return numberOfPassengers; }
else return 0;
}
//12.1. Объединение условных операторов.
//12.1.1. Добавь внутренний метод, сообщающий, могут ли быть перевезены пассажиры
//boolean canPassengersBeTransferred() в класс Car. Метод должен возвращать true, если
//водитель доступен isDriverAvailable и есть топливо fuel.
//12.1.2. Перепиши метод getNumberOfPassengersCanBeTransferred(), объединив условные
//операторы (используй метод canPassengersBeTransferred()).
private boolean canPassengersBeTransferred(){
return (isDriverAvailable()&&fuel>0);
}
public boolean isDriverAvailable() {
return driverAvailable;
}
public void setDriverAvailable(boolean driverAvailable) {
this.driverAvailable = driverAvailable;
}
public void startMoving() {
//12.2. Объединение дублирующихся фрагментов в условных операторах. Перепиши метод
//startMoving(), чтобы в нем не было повторяющихся вызовов функций.
if (numberOfPassengers > 0) {
fastenPassengersBelts();
};
fastenDriverBelt();
}
public void fastenPassengersBelts() {
}
public void fastenDriverBelt() {
}
public abstract int getMaxSpeed();
}