Herança e polimorfismo: sistema de gerenciamento de veículos

Swift Hard classes

Tarefa «Herança e polimorfismo: sistema de gerenciamento de veículos»

Desenvolva uma hierarquia de classes para gerenciar uma frota de veículos. A classe base Vehicle contém as propriedades brand (String) e year (Int), além do método description(), que retorna uma string no formato "Vehicle: brand year". A classe Car herda de Vehicle e adiciona a propriedade fuelType (String, podendo ser "petrol", "diesel", "electric") e sobrescreve description() para retornar "Car: brand year, fuel: fuelType". A classe Bicycle herda de Vehicle e adiciona a propriedade type (String, podendo ser "mountain", "road", "city") e sobrescreve description() para retornar "Bicycle: brand year, type: type". A classe Fleet gerencia um array de Vehicle e possui o método addVehicle(_: Vehicle) para adicionar um veículo, o método listDescriptions() para exibir na tela (através de print) as descrições de todos os veículos na ordem de inserção (cada uma em uma nova linha) e o método countByYear(year: Int) -> Int, que retorna a quantidade de veículos do ano especificado. Dados de entrada: primeiro um inteiro N (1 ≤ N ≤ 100) — a quantidade de veículos. Em seguida, para cada veículo, é inserida uma string do tipo ("Car" ou "Bicycle") e as propriedades correspondentes: brand (string sem espaços), year (inteiro de 1900 a 2023), e para Car — fuelType (string), para Bicycle — type (string). Após inserir todos os veículos, insira um ano (inteiro) separado por espaço para a contagem. É garantido que todos os dados são válidos. Primeiro, exiba os resultados de listDescriptions(), depois, em uma nova linha, o número de veículos do ano especificado.

Formato de Entrada

Um inteiro N. Em seguida, N blocos: uma string do tipo, uma string brand, um inteiro year, para Car uma string fuelType, para Bicycle uma string type. Depois, um inteiro yearForCount.

Formato de Saída

Primeiro, N linhas de descrições (cada descrição em uma linha separada), depois, em uma nova linha, um inteiro — a quantidade de veículos com ano igual a yearForCount.

Exemplos

Exemplo 1

ENTRADA
10
SAÍDA
30

Exemplo 2

ENTRADA
6 4 4 1 1 2 3
SAÍDA
1 1 4 4 2 3
main.swift