Система управления транспортными средствами с наследованием и полиморфизмом

Java Сложный classes

Задача «Система управления транспортными средствами с наследованием и полиморфизмом»

Разработайте систему классов для управления парком транспортных средств. Создайте абстрактный класс Vehicle с полями: id (int), brand (String), model (String), year (int) и абстрактным методом getInfo(). От него наследуйте классы Car (доп. поле: int doors) и Motorcycle (доп. поле: boolean hasSidecar). Реализуйте класс Fleet, который содержит список Vehicle и методы: addVehicle(Vehicle v), removeVehicle(int id), getVehicleInfo(int id) (возвращает информацию о ТС в формате: "id brand model year doors" для Car и "id brand model year sidecar" для Motorcycle, где sidecar выводится как "yes" или "no"), listAllVehicles() (выводит информацию обо всех ТС, каждое на новой строке). В main прочитайте из stdin количество команд N, затем N команд: "ADD id brand model year type [param]", "REMOVE id", "INFO id", "LIST". Для ADD type может быть "Car" (тогда param = doors) или "Motorcycle" (param = "yes"/"no"). Гарантируется, что id уникальны. Выведите результаты команд INFO и LIST.

Формат ввода

На первой строке целое число N (1 <= N <= 100). Затем N строк команд: ADD id brand model year type param, REMOVE id, INFO id, LIST.

Формат вывода

Для каждой команды INFO выведите строку с информацией о ТС. Для команды LIST выведите информацию обо всех ТС в порядке добавления, по одной строке на ТС. Если ТС с заданным id не найдено для INFO или REMOVE, выведите "Not found".

Примеры

Пример 1

ВВОД
6 ADD 1 Toyota Camry 2015 Car 4 ADD 2 Harley Davidson 2020 Motorcycle yes INFO 1 LIST REMOVE 1 LIST
ВЫВОД
1 Toyota Camry 2015 4 1 Toyota Camry 2015 4 2 Harley Davidson 2020 yes 2 Harley Davidson 2020 yes

Пример 2

ВВОД
4 ADD 10 BMW X5 2022 Car 5 INFO 10 INFO 20 LIST
ВЫВОД
10 BMW X5 2022 5 Not found 10 BMW X5 2022 5

Пример 3

ВВОД
5 1 2 3 4 5
ВЫВОД
main.java