ITI0011RUS:task 09

Allikas: Kursused
Redaktsioon seisuga 24. märts 2015, kell 21:32 kasutajalt Aleksandr (arutelu | kaastöö)
(erin) ←Vanem redaktsioon | Viimane redaktsiooni (erin) | Uuem redaktsioon→ (erin)
Mine navigeerimisribale Mine otsikasti

Срок сдачи упражнения 14-е занятие (25 марта).

Общая информация об упражнениях: ITI0011RUS_Practice.
Обратно на страницу предмета.

Описание

В этом упражнении потренируемся в использовании интерфейсов и абстрактных классов.

Целью задания является описать автобусы в автобусном парке. Внизу (см. #Шаблон) дано абстрактное описание автобуса. Вам следует использовать его в своем коде. Дальнейшие шаги:

  1. создать интерфейс LoquidFuel, в котором было бы сигнатуры двух методов: double getRange() и double getEmission().
  2. создать interface Hybrid, в котором была бы сигнатура: double getVoltage(). Помимо этого должно быть две константы double konsanti: HIGH_VOLTAGE = 600 и LOW_VOLTAGE = 480.
  3. создать класс Hybrid. В классе следует использовать как наследование (extends Class), так и реализацию интерфейсов (implements Interface).
    1. cоздать конструктор
    2. добавить поля voltage, range, emission
    3. реализовать методы getRange(), getEmission(), getVoltage(), getAcceleration().
    4. getAcceleration() всегда должен возвращать 4.0.
  4. создать класс FuelBus (liquid fuel bus)
    1. добавить поля range, emission.
    2. создать конструктор
    3. реализовать наследуемые абстрактные методы
    4. getAcceleration() всегда возвращает 3.0.
  5. создать класс ElectricBus
    1. создать конструктор
    2. добавить поле voltage
    3. метод getAcceleration() всегда возвращает 5.0.

Создайте класс Main и в нем:

  1. статический метод findBusWithLowestVoltage. Он должен принимать список типа List в качестве параметра. Тип данных, который хранится в списке, придумайте сами. Метод просматривает переданный список автобусов и возвращает тот объект, в случае которого значение voltage было наименьшим.
  2. статический метод с именем printData, которому также передается List, в котором хранятся различные созданные классы. Метод выводит следующую информацию по каждому транспортному средству: идентификатор (id), ускорение, количество мест. Если это электромобиль - дополнительно выводить значение поля voltage. Если это автобус на жидком топливе - значение поля range.
  3. В функции 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>