// App - Reserva de Hospedagem
// Criando uma classe de cliente
class Cliente {
String hospede;
/* Após pesquisas, resolvi utilizar o atributo 'final' para garantir que a referência da lista não seja reatribuída,
permitindo apenas modificações no conteúdo (add/remove).
IMPORTANTE: Em sistemas mais complexos (com banco de dados, APIs, filtros ou sincronização), pode ser necessário remover o 'final' para permitir
substituição completa da lista. */
final List<String> _reservas;
Cliente(this.hospede, this._reservas);
// Realizando uma reserva
void fazerReserva(String quarto) {
(_reservas.add(quarto)); //Adiciona o quarto à lista de reservas do cliente
print('Reserva do quarto $quarto confirmada para $hospede');
(_mostrarReserva()); // Exibe a lista de reservas atualizada
}
// Cancelando uma reserva
void cancelarReserva(String quarto) {
if (_reservas.contains(quarto)) { // Verifica se a reserva existe
(_reservas.remove(quarto));
print('Reserva do quarto $quarto CANCELADA para $hospede');
(_mostrarReserva());
} else {
print('$hospede não possui reserva para o quarto $quarto.');
}
}
// Função privada para exibir as reservas
void _mostrarReserva() {
if (_reservas.isEmpty) {
print('$hospede não possui reservas ativas.\n');
} else {
print('Reservas ativas de $hospede: $_reservas\n');
}
}
}
void main() {
print("\n------------ Reserva de Hospedagem ------------\n" );
Cliente cliente = Cliente('Joaquim', []); // Cria um novo cliente
cliente.fazerReserva('101');
cliente.fazerReserva('102');
cliente.fazerReserva('103');
cliente.cancelarReserva('102');
}