1
resposta

Lista de exercícios - Sistema de Agendamento

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();
}

Matricule-se agora e aproveite até 50% OFF

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

QUERO APROVEITAR
1 resposta

Oi, José Antônio! Como vai?

Agradeço por compartilhar.

Gostei da sua implementação! Você aplicou bem o conceito de classe abstrata e o uso de interfaces com o implements, deixando cada profissional responsável por sua própria lógica. Isso mostra que você entendeu bem o pilar do polimorfismo na orientação a objetos.

Continue praticando essa ideia com novos exemplos.

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