1. 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
2. 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.
3. 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.
4. “ 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.
5. 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.
6. 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:
7.
8.
9. 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
10. 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(); }
11. A classe bipMedico é responsável por implementar a interface Observer como também a Interface 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.
12. 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!"); } else if (pressaoAtual < 9.7f) { System. out.println("Pressão baixa"); } else { System. out.println("Pressão sob Controle"); }
13. 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):
14.
15. A nossa classe de teste posteriormente irá usar as informações aqui contidas.
16. 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 !
17. 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étodo que é responsável por notificar o sistema todo do novo status de suas variáveis.