1
resposta

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

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

    public string Titulo {get; private set;}

    public virtual void Confirmar()
    {
        Console.WriteLine("Reserva confirmada");
    }
}

class ReservaPresencial : Reserva
{
    public ReservaPresencial(string titulo) : base(titulo)
    {
    }

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

class ReservaOnline : Reserva
{
    public ReservaOnline(string titulo) : base(titulo)
    {
    }

    public override void Confirmar()
    {
         Console.WriteLine($"Confirmando reserva online: {Titulo}");
        Console.WriteLine("Link de acesso enviado por e-mail!");
    }
}


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

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

Oi, Eduardo! Como vai?

Agradeço por compartilhar

Gostei da forma como você aplicou polimorfismo usando virtual na classe Reserva e override nas classes ReservaPresencial e ReservaOnline. A lista do tipo List<Reserva> também ficou bem construída, porque permite tratar reservas diferentes de forma genérica, chamando Confirmar() e deixando cada subtipo executar seu próprio comportamento.

Continue praticando essa estrutura, pois ela ajuda bastante a organizar sistemas orientados a objetos. Dica: ao criar novos tipos de reserva, mantenha a mesma ideia: herdar de Reserva e sobrescrever o método Confirmar() com as regras específicas daquele tipo.

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