Padrão Observador (Orientação à Objetos)

4.044 visualizações

Publicada em

Slide feito para explicar o que é o Padrão Observer.

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
4.044
No SlideShare
0
A partir de incorporações
0
Número de incorporações
42
Ações
Compartilhamentos
0
Downloads
112
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Padrão Observador (Orientação à Objetos)

  1. 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. 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. 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. 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. 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. 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. <ul><li>E então, caro estudante, quantas interfaces você conseguiu contar no nosso diagrama? Três, certo? </li></ul><ul><li><<Interfaces>> </li></ul><ul><ul><li>Subject </li></ul></ul><ul><ul><li>Observer </li></ul></ul><ul><ul><li>DisplayElement </li></ul></ul><ul><ul><li>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. </li></ul></ul>
  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
  9. 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(); }
  10. 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.
  11. 12. Método display() : // Somente mostrando a implementação para Pressão: public void display() { System. out.print(&quot;Pressão: &quot;); if (pressaoAtual > 15.12f) { System. out.println(&quot;A Pressão está alta! &quot;); } else if (pressaoAtual < 9.7f) { System. out.println(&quot;Pressão baixa &quot;); } else { System. out.println(&quot;Pressão sob Controle &quot;); }
  12. 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):
  13. 15. A nossa classe de teste posteriormente irá usar as informações aqui contidas.
  14. 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 !
  15. 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.

×