1
resposta

[Projeto] Reservas de experiências

Reserva.cs

public class Reserva
{
    public string Titulo { get; set; }

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

ReservaPresencial.cs

public 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");
    }
}

ReservaOnline.cs

public 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!");
    }
}

Program.cs

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

Olá, Matheus, como vai?

Seu código implementa corretamente os conceitos de herança e polimorfismo propostos no exercício. O uso da palavra-chave virtual na classe base e o override nas classes derivadas garantem que o comportamento específico de cada tipo de reserva seja executado corretamente durante a iteração na lista. A lógica de passar o título para o construtor da classe base via base(titulo) também foi aplicada de forma adequada.

Parabéns pelo empenho em praticar esses fundamentos de orientação a objetos e continue compartilhando seu progresso. O fórum está sempre à disposição.

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