Sistema de gestión de vehículos con herencia y polimorfismo

Java Hard classes

Tarea «Sistema de gestión de vehículos con herencia y polimorfismo»

Desarrolle un sistema de clases para gestionar una flota de vehículos. Cree una clase abstracta Vehicle con los campos: id (int), brand (String), model (String), year (int) y el método abstracto getInfo(). De ella herede las clases Car (campo adicional: int doors) y Motorcycle (campo adicional: boolean hasSidecar). Implemente la clase Fleet, que contiene una lista de Vehicle y los métodos: addVehicle(Vehicle v), removeVehicle(int id), getVehicleInfo(int id) (devuelve la información del vehículo en el formato: "id brand model year doors" para Car y "id brand model year sidecar" para Motorcycle, donde sidecar se muestra como "yes" o "no"), listAllVehicles() (muestra la información de todos los vehículos, cada uno en una nueva línea). En main, lea desde stdin la cantidad de comandos N, luego N comandos: "ADD id brand model year type [param]", "REMOVE id", "INFO id", "LIST". Para ADD, type puede ser "Car" (entonces param = doors) o "Motorcycle" (param = "yes"/"no"). Se garantiza que los id son únicos. Muestre los resultados de los comandos INFO y LIST.

Formato de entrada

En la primera línea, un número entero N (1 <= N <= 100). Luego N líneas de comandos: ADD id brand model year type param, REMOVE id, INFO id, LIST.

Formato de salida

Para cada comando INFO, muestre una línea con la información del vehículo. Para el comando LIST, muestre la información de todos los vehículos en el orden de ingreso, una línea por vehículo. Si no se encuentra un vehículo con el id dado para INFO o REMOVE, muestre "Not found".

Ejemplos

Ejemplo 1

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

Ejemplo 2

ENTRADA
4 ADD 10 BMW X5 2022 Car 5 INFO 10 INFO 20 LIST
SALIDA
10 BMW X5 2022 5 Not found 10 BMW X5 2022 5

Ejemplo 3

ENTRADA
5 1 2 3 4 5
SALIDA
main.java