1
resposta

Faça como eu fiz: simulador de transporte urbano

public class Transporte
{
public virtual int CalcularTempo(int distancia)
{
    return distancia;
}
}


public class Bicicleta : Transporte
{
public override int CalcularTempo(int distancia)
{
    return distancia * 4;
}
}


public class Metro : Transporte
{
public override int CalcularTempo(int distancia)
{
    return distancia + 5;
}
}


public class Onibus : Transporte
{
public override int CalcularTempo(int distancia)
{
    return (distancia * 2) + 5; 
}
}


List<Transporte> transportes = new List<Transporte>
{
new Onibus(),
new Metro(),
new Bicicleta()
};

int distancia = 10;

foreach (var transporte in transportes)
{
Console.WriteLine($"Tempo para percorrer: {distancia} km usando {transporte.GetType().Name}: {transporte.CalcularTempo(distancia)} minutos");
}
1 resposta

Oi, Jonas! Parabéns por mais um desafio concluído com sucesso.

Sua implementação do simulador de transporte demonstra um domínio sólido sobre o funcionamento do polimorfismo de subtipos. Ao utilizar o método GetType().Name, você conseguiu criar uma saída dinâmica que identifica automaticamente qual meio de transporte está sendo calculado, o que deixa o código limpo e evita a repetição de strings manuais.

As fórmulas matemáticas foram aplicadas corretamente dentro de cada sobrescrita (override), respeitando as regras específicas de cada modal. Essa abordagem é excelente para sistemas que precisam calcular estimativas diferentes sob uma mesma interface comum.

Para expandir ainda mais sua lógica, vale pesquisar sobre o uso de Interfaces no C#, que é outra maneira de garantir que diferentes classes possuam o mesmo método, mas sem necessariamente compartilhar uma herança de classe base. Você pode encontrar detalhes na documentação sobre Interfaces no C#.

Conseguiu notar como essa estrutura facilita a adição de um novo meio de transporte, como um "Patinete" ou "Carro", sem precisar alterar o laço foreach principal?

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