abstract class Agendamento {
void calculaDuracaoConsulta();
void verificaDisponibilidade();
}
class Medico implements Agendamento {
@override
void calculaDuracaoConsulta() {
print('-Duração da consulta de 30 min.');
}
@override
void verificaDisponibilidade() {
print('-Consulta disponível no calendário.');
}
}
class Dentista implements Agendamento {
@override
void calculaDuracaoConsulta() {
print("-Duração de 45 minutos");
}
@override
void verificaDisponibilidade() {
print("-Verificar disponibilidade considerando intervalos de 15 minutos");
}
}
class GerenciadorDeAgendamentos {
List<Agendamento> profissionais = [];
void adicionarProfissional(Agendamento profissional) {
profissionais.add(profissional);
}
void exibirDuracaoEDisponibilidade() {
print('\n---------------------------------------');
print(' SISTEMA DE AGENDAMENTOS \n');
int index = 1;
for (Agendamento profissional in profissionais) {
String tipo = profissional is Medico ? 'MÉDICO' : 'DENTISTA';
print('-------------$tipo #$index --------------');
profissional.calculaDuracaoConsulta();
profissional.verificaDisponibilidade();
print('\n');
index++;
}
print('--------------------------------------------');
print(' Total de profissionais: ${profissionais.length}');
print('---------------------------------------------\n');
}
}
void main() {
Medico medico = Medico();
Dentista dentista = Dentista();
GerenciadorDeAgendamentos gerenciador = GerenciadorDeAgendamentos();
gerenciador.adicionarProfissional(medico);
gerenciador.adicionarProfissional(dentista);
gerenciador.exibirDuracaoEDisponibilidade();
}