Reserva.cs
internal abstract class Reserva(string titulo)
{
internal string Titulo { get; } = titulo;
internal virtual void Confirmar()
=> Console.WriteLine("Confirmando reserva: " + Titulo);
}
ReservaPresencial.cs
internal class ReservaPresencial(string titulo, string pontoDeEncontro) : Reserva(titulo)
{
public string PontoDeEncontro { get; private set; } = pontoDeEncontro;
internal override void Confirmar()
{
Console.WriteLine($"Confirmando reserva presencial: {Titulo}");
Console.WriteLine($"Ponto de encontro: {PontoDeEncontro}");
}
}
ReservaOnline.cs
internal class ReservaOnline(string descricao, string detalhes) : Reserva(descricao)
{
public string Detalhes { get; } = detalhes;
internal override void Confirmar()
{
Console.WriteLine($"Confirmando reserva online: {Titulo}");
Console.WriteLine(Detalhes);
}
}
Program.cs
List<Reserva> reservas =
[
new ReservaPresencial("Trilha na Serra", "Praça Central, às 8h"),
new ReservaOnline("Workshop de Culinária Italiana", "Link de acesso enviado por e-mail!")
];
foreach (var reserva in reservas)
reserva.Confirmar();