ITI0011RUS:task 09
Описание
В этом упражнении потренируемся в использовании интерфейсов и абстрактных классов.
Целью задания является описать автобусы в автобусном парке. Внизу (см. #Шаблон) дано абстрактное описание автобуса. Вам следует использовать его в своем коде. Дальнейшие шаги:
- создать интерфейс
LoquidFuel
, в котором было бы сигнатуры двух методов:double getRange()
иdouble getEmission()
. - создать interface
Hybrid
, в котором была бы сигнатура:double getVoltage()
. Помимо этого должно быть две константыdouble
konsanti: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>