Skip to content

Latest commit

 

History

History
60 lines (43 loc) · 3.82 KB

README.md

File metadata and controls

60 lines (43 loc) · 3.82 KB

Kotlin-6

Проект к шестому занятию:

  • интерфейсы
  • классы
  • объекты
  • внутренние статические и динамические классы
  • объекты-компаньоны
  • sealed интерфейсы и классы

Домашнее задание

В этом домашнем задании вам предстоит добавить топливную систему в наши машины и заправить её бензином.

Задание 1. Создание топливной систем

  • Топливная система машины будет состоять из бака(Tank) и горловины (TankMouth)
  • Бак (его реализация) спрятана от пользователя машины
  • Машина заправляется через горловину бака
  • Горловина может принимать или бензин, или сжиженный газ
  • Уровень бензина доступен водителю через интерфейс CarOutput (добавить метод в интерфейс)
  • Считаем, что бак может принимать и бензин, и газ. Что именно туда заливается - определяется горловиной, которая установлена на баке
  • Топливная система должна устанавливаться "специалистом" - сборщиком нашей машины

Интерфейс бака и его связь с другими компонентами может выглядеть, например, вот так: LCE state diagram

Полный интерфейс машины (для водителя) должен выглядеть вот так: LCE state diagram

Сделайте машинам топливную систему:

  • Семерка пусть ездит на газу
  • Восьмерка пусть ездит на бензине
  • ТАЗ может иметь любую систему, но его бак взрывается при попытке заправить (бросает исключение)

Задание 2. Заправка

Создайте заправку и залейте топливо в баки:

  • заправка на вход получает машину
  • в зависимости от того, какая на машине горловина - использует разный метод заправки
  • заправка должна быть безопасной: если бак взорвался - должна обработать исключение

Результат: добавьте функцию заправки для коллекции машин:

  • создаем коллекцию машин
  • выводим содержимое баков (например, модифицировав метод toString машины)
  • заправляем машины на заправке
  • выводим содержимое баков после заправки

Подсказки

В заданиях можно использовать любые виды классов, что мы разбирали на лекции:

  • статические внутренние класс и объекты (например, для бачка внутри машины)
  • объекты-компаньоны (для сборщика бака и горловины)
  • Sealed-интерфейсы или классы (горловина бачка)