0
respostas

Lista de exercícios : 4, 5 e 6;

class Quarto { //Classe pai
  String tipoQuarto;
  double valorDiaria;
  int numeroDiarias;

  Quarto(this.numeroDiarias, this.valorDiaria, this.tipoQuarto);
  double get valorTotal => valorDiaria * numeroDiarias; // Cálculo de diarias usando Getter

  void reservar() {
    print("- Reserva confirmada para $numeroDiarias diária(s) no quarto padrão: $tipoQuarto.");
    print("- Valor total: R\$ ${valorTotal.toStringAsFixed(2)}."); //Usa o getter valorTotal
  }
}

// Herança simples - sem serviços adicionais
class QuartoSimples extends Quarto {
  QuartoSimples (int numeroDiarias) : super(numeroDiarias, 80, 'Simples'); /* Chama construtor da classe pai */
}

// Herança + Polimorfismo (adiciona café da manhã)
class QuartoMedio extends Quarto {
  QuartoMedio (int numeroDiarias) : super(numeroDiarias, 250, 'Médio');

  void servirCafeDaManha() {
    print("- Incluso o serviço de café da manhã no quarto padrão: $tipoQuarto.");
  }
}

// Herança + Polimorfismo (adiciona café da manhã e serviço de quarto)
class QuartoLuxo extends Quarto {
  QuartoLuxo (int numeroDiarias) : super(numeroDiarias, 1000, 'Luxo');

  void servirCafeDaManha() {
    print("- Incluso o serviço de café da manhã no quarto padrão: $tipoQuarto.");
  }

  void limparQuarto() {
    print("- Incluso o serviço de limpeza do quarto no padrão: $tipoQuarto.");
  }
}

void exibirTabelaPrecos() {
  print("\n" + "=" * 62);
  print("                    TABELA DE PREÇOS");
  print("=" * 62);
  print("| Tipo de Quarto      | Valor da Diária                      |");
  print("-" * 62);
  print("| Simples             | R\$ 80,00                             |");
  print("| Médio               | R\$ 250,00                            |");
  print("| Luxo                | R\$ 1.000,00                          |");
  print("=" * 62);
  print("\nServiços Inclusos:");
  print("  - Simples: Hospedagem básica");
  print("  - Médio: Hospedagem + Café da manhã");
  print("  - Luxo: Hospedagem + Café da manhã + Serviço de quarto");
  print("");
}

void main(){

  exibirTabelaPrecos();

  print("-" * 62);
  print("                    Reservas de Quartos");
  print("-" * 62);


  QuartoSimples quartoSimples = QuartoSimples(3);
  quartoSimples.reservar();
  print("");

  QuartoMedio quartoMedio = QuartoMedio(5);
  quartoMedio.reservar();
  quartoMedio.servirCafeDaManha();
  print("");

  QuartoLuxo quartoLuxo = QuartoLuxo(7);
/* Quando reservar() é chamado, ele usa valorTotal internamente
valorTotal calcula: 1000 * 7 = R$ 7000.00*/
  quartoLuxo.reservar();
  quartoLuxo.servirCafeDaManha();
  quartoLuxo.limparQuarto();
}

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR