Oi, Eduardo! Como vai?
Agradeço por compartilhar.
Seu projeto ficou bem organizado e mostra muito bem o uso de polimorfismo em C#. A classe Transporte define o comportamento base com CalcularTempo, e cada subtipo (Onibus, Metro e Bicicleta) sobrescreve esse método com uma regra própria. Isso deixa o foreach mais limpo, porque ele consegue chamar o mesmo método para diferentes tipos de transporte.
Uma dica interessante para o futuro é usar uma propriedade para guardar o nome do transporte, evitando depender de GetType().Name.
class Transporte
{
public string Nome { get; set; }
public virtual int CalcularTempo(int distanciaKm)
{
return distanciaKm;
}
}
Nesse exemplo, Nome guarda o nome que sera exibido na tela, deixando o código mais flexível caso voce queira mostrar um texto diferente do nome da classe.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!