FUNDAÇÃO UNIVERSIDADE REGIONAL DE BLUMENAU
CENTRO DE CIÊNCIAS EXATAS E NATURAIS
DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO
PROFESSOR: Adilson Vahldick
PROGRAMAÇÃO ORIENTADA A OBJETOS II
Exercício 05
Esse exercício representa a implementação de controle de celeiros. No diagrama abaixo a classe Celeiro é
delimitada por um tipo genérico Racao. Um objeto Racao representa um saco de ração. Quando se
constrói um celeiro ele possui uma identificação e a quantidade máxima de sacos que ele suporta. O
método addSaco adiciona um saco, desde que não tenha alcançado a quantidade máxima. O método
consumirSaco retorna um saco e retira ele do celeiro. A ordem de retirada é a mesma ordem de entrada:
primeiro saco adicionado é o primeiro saco a
sair. O método getQtdadeSacosAtuais()
retorna quantos sacos estão armazenados no
celeiro.
Existem dois tipos de Racao: Milho e Soja. O
método consumir do Milho retorna 100 e da
Soja retorna 50.
Podem ser registrados listeners ao celeiro. O
celeiro notifica esses listeners em três
momentos: quando um novo saco consegue
ser adicionado (entrouNovoSaco), quando
após retirar o saco o celeiro está com metade
de sua capacidade (chegouNaMetade) e
quando após retirar o saco o celeiro ficar
vazio (chegouNoFinal).
Observe que nesses métodos é enviado um objeto EventObject. Ao criar um objeto desses, passe como
parâmetro o objeto Celeiro.
Existem dois tipos de listeners:
1. EchoListener: que imprime na console as mensagens “Chegou na metade do celeiro xxx”, “Chegou
no final do celeiro xxx” e “Entrou novo saco no celeiro xxx. Agora tem yyy sacos”, para os métodos
chegouNaMetade, chegouNoFinal e entrouNovoSaco respectivamente. Onde se lê xxx representa o
id do celeiro e yyy é a quantidade de sacos que o celeiro possui;
2. MailListener: que trata somente a notificação de chegouNoFinal. Ele cria um novo objeto Mail,
popula ele com o destinatário, assunto e mensagem, e adiciona esse objeto numa lista interna da
classe MailListener. Crie um método getListaMails() para retornar essa lista. Você precisa criar essa
classe Mail. O destinatário segue o seguinte formato : [email protected] onde id é o id do celeiro. O
assunto é fixo e contém o texto “Chegou no final”. A mensagem também é fixa e contém
“Atenção: verifique o celeiro pois terminou o estoque.”. Essa classe Mail tem um método toString
que retorna uma string no formato abaixo, onde o xxxx precisa ser substituído pelos respectivos
valores:
Para: xxxx
Assunto: xxxx
Mensagem:
xxxx
Crie uma classe de Sistema que faça:
(i) crie um celeiro tipado para o milho com id 10 e quantidade máxima de 4; (ii) crie um celeiro tipado
para a soja com id 20 e quantidade máxima de 2; (iii) crie um EchoListener; (iv) crie um MailListener; (v)
registre o EchoListener no celeiro do milho; (vi) e (vii) registre no celeiro da soja o EchoListener e o
MailListener; (viii) adicione cinco sacos de soja, com id de 1 a 5, no celeiro da soja; (ix) adicione cinco
sacos de milho, com id de 1 a 5, no celeiro do milho; (x) consuma um saco de soja; (xi) imprima na
console “Saco de soja consumido : zzz” , onde zzz representa o valor retornado do método consumir do
saco consumido em (x); (xii) consuma um saco de milho; (xiii) imprima na console “Saco de milho
consumido : zzz” , onde zzz representa o valor retornado do método consumir do saco consumido em
(xii); (xiv) consuma um saco de soja; (xv) imprima na console todos os objetos Mail.
Download

Exercício 5 - Departamento de Sistemas e Computação