Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Faça como eu fiz: simulador de transporte urbano

Program.cs

using Mobilidade.Modelos;

List<Transporte> opcoes = new List<Transporte> {
    new Onibus(),
    new Metro(),
    new Bicicleta(),
    new Patinete(),
    new Carro()
};

int distancia = 10;

Console.Clear();
opcoes.ForEach(t => Console.WriteLine($"{t.GetType().Name}: {t.CalcularTempo(distancia).ToString("F0")} minutos."));

Transporte.cs

namespace Mobilidade.Modelos;
class Transporte {
    
    public double tempoMinutos;
    public double tempoHoras;
    protected int velocidadeMedia;

    public virtual double CalcularTempo(int distanciaKm) {
        return tempoMinutos;
    }

}

Metro.cs

namespace Mobilidade.Modelos;
class Metro : Transporte {

    public override double CalcularTempo(int distanciaKm) {
        velocidadeMedia = 36;
        tempoHoras = (100 * distanciaKm / velocidadeMedia);
        tempoMinutos = (tempoHoras * 60 ) / 100;
        return tempoMinutos;
    }
    
}

Bicicleta.cs

namespace Mobilidade.Modelos;
class Bicicleta : Transporte {

    public override double CalcularTempo(int distanciaKm) {
        velocidadeMedia = 18;
        tempoHoras = (100 * distanciaKm / velocidadeMedia);
        tempoMinutos = (tempoHoras * 60 ) / 100;
        return tempoMinutos;
    }
    
}

Onibus.cs

namespace Mobilidade.Modelos;
class Onibus : Transporte {

    public override double CalcularTempo(int distanciaKm) {
        velocidadeMedia = 20;
        tempoHoras = (100 * distanciaKm / velocidadeMedia);
        tempoMinutos = (tempoHoras * 60 ) / 100;
        return tempoMinutos;
    }
    
}

Patinete.cs

namespace Mobilidade.Modelos;
class Patinete : Transporte {

    public override double CalcularTempo(int distanciaKm) {
        velocidadeMedia = 12;
        tempoHoras = (100 * distanciaKm / velocidadeMedia);
        tempoMinutos = (tempoHoras * 60 ) / 100;
        return tempoMinutos;
    }
    
}

Carro.cs

namespace Mobilidade.Modelos;
class Carro : Transporte {

    public override double CalcularTempo(int distanciaKm) {
        velocidadeMedia = 35;
        tempoHoras = (100 * distanciaKm / velocidadeMedia);
        tempoMinutos = (tempoHoras * 60 ) / 100;
        return tempoMinutos;
    }
    
}
1 resposta
solução!

Olá, Diego, como vai?

Seu projeto demonstra uma excelente aplicação de herança e polimorfismo, indo além do solicitado ao adicionar novos meios de transporte e implementar uma lógica baseada em velocidade média. O uso do método virtual na classe base e as sobrescritas nas classes filhas estão corretos e seguem as boas práticas de orientação a objetos. Você conseguiu organizar bem os namespaces e a estrutura das classes.

Parabéns pelo empenho e por compartilhar sua evolução no fórum. Continue praticando e explorando novas possibilidades com C#. O fórum está à disposição para qualquer dúvida.

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