Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
1
resposta

[Projeto] Faça como eu fiz: reservas de experiências

Classe Program:

List<Reserva> reservas = new()
{
    new ReservaPresencial("Trilha na Serra"),
    new ReservaOnline("Workshop de Culinária Italiana")
};

foreach (var reserva in reservas)
{
    reserva.Confirmar();
}

Clsse Reserva:

namespace Polimorfismo.ReservasDeExperiencias;

internal class Reserva(string titulo)
{
    public string Titulo { get; set; } = titulo;

    public virtual void Confirmar()
    {
        Console.WriteLine($"Confirmando reserva genérica: {Titulo}");
    }
}

Classe ReservaPresencial:

namespace Polimorfismo.ReservasDeExperiencias;

internal class ReservaPresencial(string titulo) : Reserva(titulo)
{
    public override void Confirmar()
    {
        Console.WriteLine($"Confirmando reserva presencial: {Titulo}");
        Console.WriteLine("Ponto de encontro: Praça Central, às 8h");
    }
}

Classe ReservaOnline:

namespace Polimorfismo.ReservasDeExperiencias;

internal class ReservaOnline(string titulo) : Reserva(titulo)
{
    public override void Confirmar()
    {
        Console.WriteLine($"Confirmando reserva online: {Titulo}");
        Console.WriteLine("Link de acesso enviado por e-mail!");
    }
}
1 resposta
solução!

Oi, Fabiano! Como vai?

Muito interessante a forma como você aplicou o polimorfismo de subtipos utilizando a classe base Reserva e as classes derivadas ReservaPresencial e ReservaOnline. O uso do override no método Confirmar() ficou bem organizado e demonstra claramente como cada tipo de reserva pode ter um comportamento específico, mesmo sendo tratado por uma única lista de Reserva.

Uma dica interessante para o futuro é utilizar interpolação de strings para criar mensagens dinâmicas e facilitar a manutenção do código. Veja este exemplo:


string titulo = "Curso CSharp";
Console.WriteLine($"Reserva confirmada: {titulo}");

Nesse exemplo, a variável titulo é inserida diretamente na mensagem exibida no console, deixando o código mais legível e fácil de manter.

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