Adicionando ao projeto Hotel Herança e Polimorfismo.
// arquivo quartos.dart
class Quartos {
final String _numeroQuarto;
final int _numeroDeDiarias;
double? valorDiaria;
Quartos(this._numeroQuarto, this._numeroDeDiarias, {this.valorDiaria});
void reservar() {
print('O quarto $_numeroQuarto foi reservado');
}
void calcularValorTotal() {
final double valorTotal;
if (_numeroDeDiarias.toString().isNotEmpty &&
valorDiaria != null &&
valorDiaria.toString().isNotEmpty) {
valorTotal = _numeroDeDiarias * valorDiaria!;
print(
'O valor totas da sua reserva para $_numeroDeDiarias dias é de: R\$ $valorTotal');
} else {
print('deu erro calucar valor total de diarias');
}
}
void cafeDaManha(String tipo) {
if (tipo == 'Medio') {
print('Servindo café da manhã no quarto $tipo');
} else if (tipo == 'Luxo') {
print('Servindo café da manhã no quarto $tipo');
} else {
print('Serviço não disponível para quarto $tipo');
}
}
}
class Simples extends Quartos {
final double _diariaSimples = 80.0;
Simples(super._numeroQuarto, super._numeroDeDiarias, {super.valorDiaria}) {
if (valorDiaria == null || !valorDiaria.toString().isNotEmpty) {
super.valorDiaria = _diariaSimples;
} else if (valorDiaria.toString().isNotEmpty) {
super.valorDiaria = super.valorDiaria;
}
}
}
class Medio extends Quartos {
final double _diariaMedio = 250;
Medio(super._numeroQuarto, super._numeroDeDiarias, {super.valorDiaria}) {
if (valorDiaria == null || !valorDiaria.toString().isNotEmpty) {
super.valorDiaria = _diariaMedio;
} else if (super.valorDiaria.toString().isNotEmpty) {
super.valorDiaria = super.valorDiaria;
}
}
}
class Luxo extends Quartos {
final double _diariaLuxo = 1000.0;
Luxo(super._numeroQuarto, super._numeroDeDiarias, {super.valorDiaria}) {
if (super.valorDiaria == null || !super.valorDiaria.toString().isNotEmpty) {
super.valorDiaria = _diariaLuxo;
} else if (super.valorDiaria.toString().isNotEmpty) {
super.valorDiaria = super.valorDiaria;
}
}
void servicoDeQuarto(String tipo) {
print('Limpando o quarto $tipo.');
}
}
// arquivo hotel.dart
import 'quartos.dart';
void main(List<String> arguments) {
Simples quartoSimples = Simples('101', 6);
quartoSimples;
quartoSimples.reservar();
quartoSimples.calcularValorTotal();
quartoSimples.cafeDaManha('Simples');
print('');
Medio quartoMedio = Medio('201', 3);
quartoMedio;
quartoMedio.reservar();
quartoMedio.calcularValorTotal();
quartoMedio.cafeDaManha('Médio');
print('');
Luxo quartoLuxo = Luxo('Suite', 4);
quartoLuxo;
quartoLuxo.reservar();
quartoLuxo.calcularValorTotal();
quartoLuxo.cafeDaManha('Luxo');
quartoLuxo.servicoDeQuarto('Luxo');
}