Sistema de gerenciamento de veículos com herança e polimorfismo

Java Hard classes

Tarefa «Sistema de gerenciamento de veículos com herança e polimorfismo»

Desenvolva um sistema de classes para gerenciar uma frota de veículos. Crie uma classe abstrata Vehicle com os campos: id (int), brand (String), model (String), year (int) e o método abstrato getInfo(). Dela, herdam as classes Car (campo adicional: int doors) e Motorcycle (campo adicional: boolean hasSidecar). Implemente a classe Fleet, que contém uma lista de Vehicle e os métodos: addVehicle(Vehicle v), removeVehicle(int id), getVehicleInfo(int id) (retorna informações do veículo no formato: "id brand model year doors" para Car e "id brand model year sidecar" para Motorcycle, onde sidecar é exibido como "yes" ou "no"), listAllVehicles() (exibe informações de todos os veículos, cada um em uma nova linha). No main, leia da stdin a quantidade de comandos N, em seguida N comandos: "ADD id brand model year type [param]", "REMOVE id", "INFO id", "LIST". Para ADD, type pode ser "Car" (então param = doors) ou "Motorcycle" (param = "yes"/"no"). É garantido que os ids são únicos. Exiba os resultados dos comandos INFO e LIST.

Formato de Entrada

Na primeira linha, um número inteiro N (1 <= N <= 100). Em seguida, N linhas de comandos: ADD id brand model year type param, REMOVE id, INFO id, LIST.

Formato de Saída

Para cada comando INFO, exiba uma linha com as informações do veículo. Para o comando LIST, exiba informações de todos os veículos na ordem de adição, uma linha por veículo. Se um veículo com o id informado não for encontrado para INFO ou REMOVE, exiba "Not found".

Exemplos

Exemplo 1

ENTRADA
6 ADD 1 Toyota Camry 2015 Car 4 ADD 2 Harley Davidson 2020 Motorcycle yes INFO 1 LIST REMOVE 1 LIST
SAÍDA
1 Toyota Camry 2015 4 1 Toyota Camry 2015 4 2 Harley Davidson 2020 yes 2 Harley Davidson 2020 yes

Exemplo 2

ENTRADA
4 ADD 10 BMW X5 2022 Car 5 INFO 10 INFO 20 LIST
SAÍDA
10 BMW X5 2022 5 Not found 10 BMW X5 2022 5

Exemplo 3

ENTRADA
5 1 2 3 4 5
SAÍDA
main.java