padrão observador (orientação à objetos)
Post on 29-Jun-2015
3.682 Views
Preview:
DESCRIPTION
TRANSCRIPT
TUDO QUE VOCÊ QUERIA
SABER SOBRE PADRÃO
OBSERVADOR MAS TINHA
VERGONHA DE PRESTAR ATENÇÃO
NA AULA.Grupo:
Flávio Lúcio José Teles Thiago Tadeu
Bem um Padrão de Projeto, ou Design Pattern é uma maneira já reconhecida de resolver um problema de programação. Estas soluções foram disponibilizadas por outros desenvolvedores e colocadas no formato de Padrões de Projeto , um deles é o Observer.
Inicialmente ele ajuda a criar um projeto flexível e que possa ser mantido, ou seja, satisfaz o terceiro quesito para que tenhamos um grande software.
Ele vai te ajudar a evitar POG desde o começo do projeto.
“O padrão observer define a dependência um-para-muitos entre objetos para que quando um objeto mude de estado todos os seus dependentes sejam avisados e atualizados automaticamente”
Ou seja, imagine que neste padrão existirá uma classe com a responsabilidade de saber de tudo que acontece e avisar todo mundo.
Imaginamos algum sistema no qual ATUALIZAÇÃO seria um dos pontos importantes, e chegamos a conclusão que um sistema desenvolvido para um Hospital é a melhor forma de explicar e aplicar o Padrão Observador com simplicidade.
A intenção desse software é receber informações de aparelho ligados a um paciente e informar quaisquer alterações automaticamente para um médico ou responsável.
Mas parando de conversa, o que nos interessa de verdade são “Especificações” e “Implementação”
Vamos analisar as classes desse nosso projeto:
E então, caro estudante, quantas interfaces você conseguiu contar no nosso diagrama? Três, certo?
<<Interfaces>>
• Subject• Observer• DisplayElement
Observe que sendo interfaces elas simplesmente não possuem atributos e seus métodos não tem escopo algum, no entanto, são estas 3 classes que caracterizam o Padrão Observador.
Observe nossa classe Observer (hehe), o método update será responsável pela atualização de 3 variáveis, temperatura, batimentos e Pressão.
public interface Observer {public void update(float Temperatura, int pBatimentos, float pPressao);}
As classes que deverão implementar Observer são:
bipMedico e CondicoesAtuais
Esta interface possui apenas o método display() , que obriga as classes que herdam de DisplayElement a codificarem este método.
O método Display será usado para a saída de dados.
public interface DisplayElement {public void display();}
A classe bipMedico é responsável por implementar a interface Observer como também aInterface Display Element.
Ao implementar Observer ela atualiza os dados de Pressão, Batimentos e Temperatura:
public void update(float pTemperatura, int pBatimentos, float pPressao) {ultimaPressao=pressaoAtual;pressaoAtual=pPressao;
ultimoBatimento= batimentoAtual;batimentoAtual = pBatimentos;
ultimaTemperatura = temperaturaAtual;temperaturaAtual = pTemperatura;display();} Logo depois de fazer esta atualização ela chama o método display() que imprime os resultados.
Método display() :
//Somente mostrando a implementação para Pressão:
public void display() {System.out.print("Pressão: ");if (pressaoAtual > 15.12f) {System.out.println("A Pressão está alta!\n");} else if (pressaoAtual < 9.7f) {System.out.println("Pressão baixa\n");} else {System.out.println("Pressão sob Controle\n");}
A classe CondicoesAtuais será a responsável por guardar o estado atual do nosso sistema e de suas três variáveis, Pressão, Temperatura e Batimentos, sendo assim, ela também implementa a interface Observer e o método update (Isso é polimorfismo) :
Ela também receberá um objeto chamado Paciente do tipo Subject (e este Paciente chamará um método para adicionar um observador para ele (falaremos da classe Subject mais a frente):
Implementação (próximo slide):
A nossa classe de teste posteriormente irá usar as informações aqui contidas.
Esta interface representa o sujeito dentro do nosso sistema:
public interface Subject {public void registerObserver(Observer o);public void removeObserver(Observer o);public void notifyObservers();}
Seus métodos servem para registrar um novo observador, removê-lo e fazer notificação para o sistema.
Esta interface é implementada pela classe Paciente !
Inicialmente ela conhece uma Lista de Observadores (para cada novo evento em que um Observador precisa fazer uma notificação)
E ela também possui o método setModificacoes() que é por onde entrarão os dados do Paciente na nossa classe teste, após a entrada de dados este método chama outro métodoque é responsável por notificar o sistema todo do novo status de suas variáveis.
top related