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;
}
}