Baixe o app para aproveitar ainda mais
Prévia do material em texto
UFPI/CCN/DIE – Programação Orientada a Objetos - 2015/2 Professor: Pedro de Alcântara dos Santos Neto Aluno: ______________________________ Matr.:__________ 1a Avaliação Um sistema para controle de um escalas de plantão precisa ser desenvolvido. Seu funcionamento é detalhado a seguir: 1. Uma escala possui um nome, hora inicial, hora final, dia da semana. Assim, podemos ter a escala “Pediatria do Hospital São Paulo”, com os horários 7 às 13, nas segundas. Podemos ter uma de 13 às 19 também da segunda ou uma de 19 às 7 da segunda para a terça (vale o dia da entrada na escala). O dia da semana pode ser pensado como um número de 1 a 7. 2. Cada escala possui diversos participantes, que podem ser Atendentes, Médicos, Enfermeiras. Cada um possui um valor por hora trabalhada ou um valor fixo mensal. Cada profissional possui um valor por hora diferente. Um atendente tem valor fixo mensal, enquanto enfermeiros e médicos possuem valor por hora. Adicionalmente, médicos podem ter produtividade. 3. A confirmação de uma escala em uma determinada data, indica que ocorreu um plantão com sucesso. Isso significa que um objeto plantão precisa ser criado e todos os participantes desse plantão precisam ser registrados ao plantão, que é uma escala realizada em uma determinada data. Para isso, deve-se criar uma cópia dos participantes da escala no plantão, evitando assim que uma mudança na escala atual gere inconsistências nos dados do plantão já realizado. 4. Após o registro de um plantão realizado podemos lançar uma falta em algum participante. A falta indica que ele não participou do plantão e não deve ser remunerado por essa participação. 5. Da mesma forma, após o registro do plantão realizado, pode-se também lançar a produtividade de um médico. A produtividade é uma lista de procedimentos realizadas ao longo de um plantão. Por exemplo, se durante o plantão do dia 29/11/2015 um médico realizou uma sutura (costurou um corte!), ele vai receber de remuneração nesse dia o valor referente às horas trabalhadas, além de um valor adicional pelo procedimento realizado. Neste caso, um profissional médico pode ser uma lista de procedimentos realizados durante um plantão, com a quantidade de vezes que realizou cada procedimento, data e hora que realizou e o paciente que recebeu o tratamento. 6. Existe uma tabela de procedimentos que contém código, descrição e valor de tudo que pode ser realizado durante um plantão de um médico. 7. Deve ser possível calcular a remuneração mensal associada a uma escala, bem como a remuneração mensal associado a um participante. A remuneração mensal de uma escala deve ser a soma das remunerações de todos que atuaram em plantões associados a uma dada escala. A remuneração mensal de um participante é o valor que ele deve receber no mês. 8. Escolha um método para implementação. Métodos de cadastro exigem o detalhamento das pesquisas e exceções associadas. Tabela de correção e atribuição do valor máximo a ser concorrido: • Completamente errada (4) • Com erros graves (6) • Com erros médios (8) • Com erros simples (9) • Resposta sem erros (10) Assim, você precisa criar uma classe que implemente a interface ModeloDeEscala: public interface ModeloDeEscala { public Escala pesquisar(int horaI, int horaF, int diaS, String n) throws EscalaNaoCadastrada; public Plantao pesquisar(long dt, int horaI, int horaF, int diaS, String n) throws PlantaoNaoCadastrado; public void cadastrarEscala(int horaI, int horaF, int diaS, String n) throws EscalaJaCadastrada; public Participante pesquisarParticipante(int horaI, int horaF, int diaS, String n, int cpf) throws ParticipanteNaoCadastrado, EscalaNaoCadastrada; public Participante pesquisarParticipanteEmPlantao(long dt, int horaI, int horaF, int diaS, String n, int cpf) throws ParticipanteNaoCadastrado, PlantaoNaoCadastrado; public void cadastrarParticipante(int horaI, int horaF, int diaS, String n, Participante p) throws EscalaNaoCadastrada, ParticipanteJaCadastrado; public void confirmarPlantao(long dt, int horaI, int horaF, int diaS, String n) throws EscalaNaoCadastrada; public void registrarFalta(long dt, int horaI, int horaF, int diaS, String n, int cpf) throws PlantaoNaoCadastrado, ParticipanteNaoCadastrado; public void lancarProdutividade (long dt, int horaI, int horaF, int diaS, String n, int cpf, Produtividade prod) throws PlantaoNaoCadastrado, ParticipanteNaoCadastrado; public double calcularRemuneracaoMensal (int mes, String nomeEscala); public double calcularRemuneracaoMensal (int mes, String nomeEscala, int cpf); } O modelo de referencia para implementação é fornecido abaixo. Ele não possui todas os detalhes da solução, mas serve de guia para as implementações.
Compartilhar