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!

1
resposta

Sistema de Reservas Hotel - POO

Program.cs

using Hotel;

Hospede hospede = new Hospede("Juliana Moura");
Quarto quarto = new Quarto(101);
quarto.ValorDiaria = 250;

Reserva reserva = new Reserva(3, hospede, quarto);

Console.WriteLine($"Reserva para: {reserva.Hospede.Nome}");
Console.WriteLine($"Quarto: {reserva.Quarto.Numero}");
Console.WriteLine($"Valor Total: {reserva.ValorTotal}");

Hospede.cs

namespace Hotel;

internal class Hospede
{
    public Hospede(string nome)
    {
        this.Nome = nome;
    }

    public string Nome { get; set; }

}

Quarto.cs

namespace Hotel;

internal class Quarto
{
    public int Numero { get; }
    private double valorDiaria;

    public Quarto(int numero)
    {
        this.Numero = numero;
    }

    public double ValorDiaria 
    { 
        get
        {
            return valorDiaria;
        }
        set
        {
            if (value > 0) 
            {
                valorDiaria = value;
            }
            else
            {
                Console.WriteLine("Erro: O valor da diária deve ser maior que zero.");
            }
        }
    }
}

Reserva.cs

namespace Hotel;

internal class Reserva
{
    private int diarias;

    public Reserva(int diarias, Hospede hospede, Quarto quarto)
    {
        if (diarias <= 0)
        {
            throw new ArgumentException("As diárias devem ser maiores que zero.");
        }
        this.diarias = diarias;
        Hospede = hospede;
        Quarto = quarto;
    }

    public Hospede Hospede { get; }
    public Quarto Quarto { get; }
    public double ValorTotal
    {
        get
        {
            return diarias * Quarto.ValorDiaria;
        }
    }
}
1 resposta

Olá, Cauã! Tudo bem?

A sua atividade sobre Sistema de Reservas Hotel - POO ficou bem organizada e mostra uma boa aplicação de orientação a objetos, encapsulamento, propriedades, getters e setters em C#.

Sua separação entre Hospede, Quarto e Reserva deixa o código mais claro, e a validação em ValorDiaria e diarias reforça uma boa prática de proteção das regras de negócio dentro das classes. Uma dica para evoluir esse projeto é pensar em quais dados podem ser alterados depois da criação do objeto e quais devem ficar somente para leitura; isso ajuda a manter o código mais seguro e coerente com a lógica do sistema.

O que você pretende adicionar depois nesse sistema de reservas: cadastro de mais hóspedes, escolha de quartos disponíveis ou cálculo com descontos?

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