Herencia y polimorfismo: sistema de gestión de vehículos
Swift
Hard
classes
Tarea «Herencia y polimorfismo: sistema de gestión de vehículos»
Desarrolle una jerarquía de clases para gestionar un parque de vehículos. La clase base Vehicle contiene las propiedades brand (String) y year (Int), así como el método description(), que devuelve una cadena con el formato "Vehicle: brand year". La clase Car hereda de Vehicle y añade la propiedad fuelType (String, puede ser "petrol", "diesel", "electric") y redefine description() para que devuelva "Car: brand year, fuel: fuelType". La clase Bicycle hereda de Vehicle y añade la propiedad type (String, puede ser "mountain", "road", "city") y redefine description() para que devuelva "Bicycle: brand year, type: type". La clase Fleet gestiona un array de Vehicle y tiene el método addVehicle(_: Vehicle) para añadir un vehículo, el método listDescriptions() para mostrar en pantalla (mediante print) las descripciones de todos los vehículos en el orden de añadido (cada una en una nueva línea) y el método countByYear(year: Int) -> Int, que devuelve la cantidad de vehículos del año especificado. Datos de entrada: primero un número entero N (1 ≤ N ≤ 100) — la cantidad de vehículos. Luego, para cada vehículo se ingresa una cadena con el tipo ("Car" o "Bicycle") y las propiedades correspondientes: brand (cadena sin espacios), year (número entero de 1900 a 2023), y para Car — fuelType (cadena), para Bicycle — type (cadena). Después de ingresar todos los vehículos, se ingresa un año (número entero) separado por espacio para el conteo. Se garantiza que todos los datos son correctos. Primero, muestre los resultados de listDescriptions(), luego en una nueva línea el número de vehículos del año especificado.
Formato de entrada
Número entero N. Luego N bloques: cadena del tipo, cadena brand, número entero year, para Car cadena fuelType, para Bicycle cadena type. Luego un número entero yearForCount.
Formato de salida
Primero N líneas de descripciones (cada descripción en una línea separada), luego en una nueva línea un número entero — la cantidad de vehículos con año igual a yearForCount.
Ejemplos
Ejemplo 1
ENTRADA
10
SALIDA
30
Ejemplo 2
ENTRADA
6
4 4 1 1 2 3
SALIDA
1 1 4 4 2 3
main.swift