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

19
TUDO QUE VOCÊ QUERIA SABER SOBRE PADRÃO OBSERVADOR MAS TINHA VERGONHA DE PRESTAR ATENÇÃO NA AULA. upo: vio Lúcio José Teles Thiago Tadeu

description

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

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

Page 1: Padrão Observador (Orientação à Objetos)

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

Page 2: Padrão Observador (Orientação à Objetos)

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.

Page 3: Padrão Observador (Orientação à Objetos)

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.

Page 4: Padrão Observador (Orientação à Objetos)

“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.

Page 5: Padrão Observador (Orientação à Objetos)

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.

Page 6: Padrão Observador (Orientação à Objetos)

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:

Page 7: Padrão Observador (Orientação à Objetos)
Page 8: Padrão Observador (Orientação à Objetos)

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.

Page 9: Padrão Observador (Orientação à Objetos)

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

Page 10: Padrão Observador (Orientação à Objetos)

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();}

Page 11: Padrão Observador (Orientação à Objetos)

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.

Page 12: Padrão Observador (Orientação à Objetos)

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");}

Page 13: Padrão Observador (Orientação à Objetos)

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):

Page 14: Padrão Observador (Orientação à Objetos)
Page 15: Padrão Observador (Orientação à Objetos)

A nossa classe de teste posteriormente irá usar as informações aqui contidas.

Page 16: Padrão Observador (Orientação à Objetos)

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 !

Page 17: Padrão Observador (Orientação à Objetos)

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.

Page 18: Padrão Observador (Orientação à Objetos)
Page 19: Padrão Observador (Orientação à Objetos)