ITI0011RUS:task 09
Описание
В этом упражнении потренируемся в использовании интерфейсов и абстрактных классов.
Целью задания является описать автобусы в автобусном парке. Внизу (см. #Шаблон) дано абстрактное описание автобуса. Вам следует использовать его в своем коде. Дальнейшие шаги:
- создать интерфейс
LoquidFuel, в котором было бы сигнатуры двух методов:double getRange()иdouble getEmission(). - создать interface
Hybrid, в котором была бы сигнатура:double getVoltage(). Помимо этого должно быть две константыdoublekonsanti:HIGH_VOLTAGE = 600иLOW_VOLTAGE = 480. - создать класс
Hybrid. В классе следует использовать как наследование (extends Class), так и реализацию интерфейсов (implements Interface).- cоздать конструктор
- добавить поля
voltage,range,emission - реализовать методы
getRange(),getEmission(),getVoltage(),getAcceleration(). getAcceleration()всегда должен возвращать 4.0.
- создать класс
FuelBus(liquid fuel bus)- добавить поля
range,emission. - создать конструктор
- реализовать наследуемые абстрактные методы
getAcceleration()всегда возвращает 3.0.
- добавить поля
- создать класс
ElectricBus- создать конструктор
- добавить поле
voltage - метод
getAcceleration()всегда возвращает 5.0.
Создайте класс Main и в нем:
- статический метод
findBusWithLowestVoltage. Он должен принимать список типаListв качестве параметра. Тип данных, который хранится в списке, придумайте сами. Метод просматривает переданный список автобусов и возвращает тот объект, в случае которого значениеvoltageбыло наименьшим. - статический метод с именем
printData, которому также передаетсяList, в котором хранятся различные созданные классы. Метод выводит следующую информацию по каждому транспортному средству: идентификатор (id), ускорение, количество мест. Если это электромобиль - дополнительно выводить значение поля voltage. Если это автобус на жидком топливе - значение поля range. - В функции main создайте список, в который занесете все автобусы различных типов.
Шаблон
Bus.java
<source lang="java">
/**
* Abstract class of Bus. */
public abstract class Bus { /** * Unique id. */ private int id; /** * Capacity of the bus. */ private int capacity; /** * Static field which holds the next id. * When a new bus is created, the value is incremented. */ private static int nextId = 1;
/** * Constructor. As this is an abstract class, * creating Bus directly (Bus b = new Bus();) * is not allowed. But this method can be used * by subclass(es). * @param capacity */ public Bus(int capacity) { /* * Let's take next id from a static field. * Static field holds the next id number. * When a new bus is created, the number is increased. * That way every bus gets a unique id. */
id = nextId++;
this.capacity = capacity; }
/** * Returns acceleration of the bus. * @return Acceleration. */ public abstract double getAcceleration();
/** * Returns the id of the bus. * @return Id. */ public int getId() { return id; }
/** * Returns the capacity of the bus. * @return Capacity. */ public int getCapacity() { return capacity; } }
</source>