Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Resolução] Faça como eu fiz: simulador de transporte urbano

A única coisa que fiz diferente do enunciado foi usar abstract ao invés de virtual.
Transporte.cs

internal abstract class Transporte 
{
    internal abstract int CalcularTempo(int distanciaKm);
}

Onibus.cs

internal class Onibus : Transporte
{
    internal override int CalcularTempo(int distanciaKm)
        => distanciaKm * 2 + 5;
}

Bicicleta.cs

internal class Bicicleta: Transporte
{
    internal override int CalcularTempo(int distanciaKm)
        => distanciaKm * 4;
}

Metro.cs

internal class Metro : Transporte
{
    internal override int CalcularTempo(int distanciaKm)
        => distanciaKm + 5;
}

Program.cs

List<Transporte> opcoes =
[
    new Onibus(),
    new Metro(),
    new Bicicleta()
];

int distancia = 10;
foreach (var transporte in opcoes)
    Console.WriteLine($"{transporte.GetType().Name}: {transporte.CalcularTempo(distancia)} min");
2 respostas
solução!

Olá, Gerson! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de classes abstratas para definir contratos em C#, criou muito bem as implementações específicas para cada tipo de transporte e ainda compreendeu a importância do polimorfismo para permitir que diferentes objetos sejam tratados de forma uniforme.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Sugestão de conteúdo para você mergulhar ainda mais no tema:

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Muito obrigado Daniel.