Buscar

prova1-20152-poo.pdf

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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.

Outros materiais