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