SlideShare uma empresa Scribd logo
1 de 19
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:
 
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
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 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.
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;); }
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étodo que é responsável por notificar o sistema todo do novo status de suas variáveis.
 
 

Mais conteúdo relacionado

Mais procurados

Java básico - Módulo 05 - Estruturas de Repetição
Java  básico - Módulo 05 - Estruturas de RepetiçãoJava  básico - Módulo 05 - Estruturas de Repetição
Java básico - Módulo 05 - Estruturas de RepetiçãoProfessor Samuel Ribeiro
 
Examemacscalculadora
ExamemacscalculadoraExamemacscalculadora
Examemacscalculadorasoniadomngues
 
Lógica de programação em java
Lógica de programação em javaLógica de programação em java
Lógica de programação em javaAntonio Alves
 
6. estruturas de controlo de fluxo
6. estruturas de controlo de fluxo6. estruturas de controlo de fluxo
6. estruturas de controlo de fluxoEugenio Caetano
 
Algoritmos 01 - Semana 06 - Múltipla Escolha
Algoritmos 01 - Semana 06 - Múltipla EscolhaAlgoritmos 01 - Semana 06 - Múltipla Escolha
Algoritmos 01 - Semana 06 - Múltipla EscolhaEder Samaniego
 
Java básico - Módulo 04: Estruturas de controle
Java   básico - Módulo 04:  Estruturas de controleJava   básico - Módulo 04:  Estruturas de controle
Java básico - Módulo 04: Estruturas de controleProfessor Samuel Ribeiro
 
Estrutura de decisão switch case
Estrutura de decisão switch caseEstrutura de decisão switch case
Estrutura de decisão switch caseAlessandra Sra JM
 
Tratamento de exceções java
Tratamento de exceções   javaTratamento de exceções   java
Tratamento de exceções javaAntonio Oliveira
 
Algoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetiçãoAlgoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetiçãoAlex Camargo
 
PHP 5.3 - Estruturas de Controle
PHP 5.3 - Estruturas de ControlePHP 5.3 - Estruturas de Controle
PHP 5.3 - Estruturas de ControleGeorge Mendonça
 
Tratamento de exceções em Java
Tratamento de exceções em JavaTratamento de exceções em Java
Tratamento de exceções em JavaWilson Júnior
 

Mais procurados (19)

Algoritmo 04 - Estruturas de decisão
 Algoritmo 04 - Estruturas de decisão Algoritmo 04 - Estruturas de decisão
Algoritmo 04 - Estruturas de decisão
 
Java básico - Módulo 05 - Estruturas de Repetição
Java  básico - Módulo 05 - Estruturas de RepetiçãoJava  básico - Módulo 05 - Estruturas de Repetição
Java básico - Módulo 05 - Estruturas de Repetição
 
Examemacscalculadora
ExamemacscalculadoraExamemacscalculadora
Examemacscalculadora
 
Lógica de programação em java
Lógica de programação em javaLógica de programação em java
Lógica de programação em java
 
6. estruturas de controlo de fluxo
6. estruturas de controlo de fluxo6. estruturas de controlo de fluxo
6. estruturas de controlo de fluxo
 
Estruturas de seleção
Estruturas de seleçãoEstruturas de seleção
Estruturas de seleção
 
Algoritmos 01 - Semana 06 - Múltipla Escolha
Algoritmos 01 - Semana 06 - Múltipla EscolhaAlgoritmos 01 - Semana 06 - Múltipla Escolha
Algoritmos 01 - Semana 06 - Múltipla Escolha
 
Cap04
Cap04Cap04
Cap04
 
Java básico - Módulo 04: Estruturas de controle
Java   básico - Módulo 04:  Estruturas de controleJava   básico - Módulo 04:  Estruturas de controle
Java básico - Módulo 04: Estruturas de controle
 
Lógica de programação
Lógica de programaçãoLógica de programação
Lógica de programação
 
Estrutura de decisão switch case
Estrutura de decisão switch caseEstrutura de decisão switch case
Estrutura de decisão switch case
 
Tratamento de exceções java
Tratamento de exceções   javaTratamento de exceções   java
Tratamento de exceções java
 
Algoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetiçãoAlgoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetição
 
6 excecoes
6 excecoes6 excecoes
6 excecoes
 
Java 13 Excecoes
Java 13 ExcecoesJava 13 Excecoes
Java 13 Excecoes
 
I talc
I talcI talc
I talc
 
PHP 5.3 - Estruturas de Controle
PHP 5.3 - Estruturas de ControlePHP 5.3 - Estruturas de Controle
PHP 5.3 - Estruturas de Controle
 
Tratamento de exceções em Java
Tratamento de exceções em JavaTratamento de exceções em Java
Tratamento de exceções em Java
 
Algoritmos conceitos
Algoritmos conceitosAlgoritmos conceitos
Algoritmos conceitos
 

Destaque

5507 os principais design patterns
5507   os principais design patterns5507   os principais design patterns
5507 os principais design patternsAndre Baltieri
 
Padrão Observer (Java)
Padrão Observer (Java)Padrão Observer (Java)
Padrão Observer (Java)Allan Denis
 
Fundamentos de Padrões de Projeto de Software
Fundamentos de Padrões de Projeto de SoftwareFundamentos de Padrões de Projeto de Software
Fundamentos de Padrões de Projeto de SoftwareÁlvaro Farias Pinheiro
 
Padrões de Projeto - Observer e Strategy
Padrões de Projeto - Observer e StrategyPadrões de Projeto - Observer e Strategy
Padrões de Projeto - Observer e StrategyJoão Carlos Ottobboni
 
Padrão de Projeto Observer
Padrão de Projeto ObserverPadrão de Projeto Observer
Padrão de Projeto ObserverLuiza Uira
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgeLorran Pegoretti
 
Introdução a Padrões de Projeto - Engenharia de Software
Introdução a Padrões de Projeto - Engenharia de SoftwareIntrodução a Padrões de Projeto - Engenharia de Software
Introdução a Padrões de Projeto - Engenharia de SoftwareWillian Carminato
 
Observer - Padrões de projeto
Observer - Padrões de projetoObserver - Padrões de projeto
Observer - Padrões de projetoEduardo Mendes
 
Exemplos de Design Patterns em Java
Exemplos de Design Patterns em JavaExemplos de Design Patterns em Java
Exemplos de Design Patterns em Javaalexmacedo
 

Destaque (19)

Padrões de projeto
Padrões de projetoPadrões de projeto
Padrões de projeto
 
5507 os principais design patterns
5507   os principais design patterns5507   os principais design patterns
5507 os principais design patterns
 
Padrão Observer (Java)
Padrão Observer (Java)Padrão Observer (Java)
Padrão Observer (Java)
 
Fundamentos de Padrões de Projeto de Software
Fundamentos de Padrões de Projeto de SoftwareFundamentos de Padrões de Projeto de Software
Fundamentos de Padrões de Projeto de Software
 
Design Patterns - Com Java
Design Patterns  - Com JavaDesign Patterns  - Com Java
Design Patterns - Com Java
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Gof design patterns
Gof design patternsGof design patterns
Gof design patterns
 
Padrões de Projeto - Observer e Strategy
Padrões de Projeto - Observer e StrategyPadrões de Projeto - Observer e Strategy
Padrões de Projeto - Observer e Strategy
 
Padrão de Projeto Observer
Padrão de Projeto ObserverPadrão de Projeto Observer
Padrão de Projeto Observer
 
Padrões de Projeto
Padrões de ProjetoPadrões de Projeto
Padrões de Projeto
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e Bridge
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 
Introdução a Padrões de Projeto - Engenharia de Software
Introdução a Padrões de Projeto - Engenharia de SoftwareIntrodução a Padrões de Projeto - Engenharia de Software
Introdução a Padrões de Projeto - Engenharia de Software
 
Design patterns de uma vez por todas
Design patterns de uma vez por todasDesign patterns de uma vez por todas
Design patterns de uma vez por todas
 
Observer - Padrões de projeto
Observer - Padrões de projetoObserver - Padrões de projeto
Observer - Padrões de projeto
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
design patterns java
design patterns javadesign patterns java
design patterns java
 
Exemplos de Design Patterns em Java
Exemplos de Design Patterns em JavaExemplos de Design Patterns em Java
Exemplos de Design Patterns em Java
 
Padrões de Projeto - Design Patterns
Padrões de Projeto - Design PatternsPadrões de Projeto - Design Patterns
Padrões de Projeto - Design Patterns
 

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

Produtor Consumidor com Semaforo
Produtor Consumidor com SemaforoProdutor Consumidor com Semaforo
Produtor Consumidor com Semaforogicaazevedo
 
Curso de Java (Parte 3)
 Curso de Java (Parte 3) Curso de Java (Parte 3)
Curso de Java (Parte 3)Mario Sergio
 
Introdução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxIntrodução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxPaulo Cardoso
 
Curso Android - 03 Conceitos Chaves
Curso Android - 03 Conceitos ChavesCurso Android - 03 Conceitos Chaves
Curso Android - 03 Conceitos ChavesRonildo Oliveira
 
Apresentação aula 2 android
Apresentação aula 2 androidApresentação aula 2 android
Apresentação aula 2 androidAlex Braz
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Strutseduan
 
Capítulo 02 - Cadastro de Alunos e Decisões de Projeto
Capítulo 02 - Cadastro de Alunos e Decisões de ProjetoCapítulo 02 - Cadastro de Alunos e Decisões de Projeto
Capítulo 02 - Cadastro de Alunos e Decisões de ProjetoMarcio Palheta
 
Gerências de Processos: Sincronização
Gerências de Processos: SincronizaçãoGerências de Processos: Sincronização
Gerências de Processos: SincronizaçãoAlexandre Duarte
 
Machine Learning: Classificação de Comentários com Azure ML & Python
Machine Learning: Classificação de Comentários com Azure ML & PythonMachine Learning: Classificação de Comentários com Azure ML & Python
Machine Learning: Classificação de Comentários com Azure ML & PythonGabriel Schade Cardoso
 

Semelhante a Padrão Observador (Orientação à Objetos) (20)

Produtor Consumidor com Semaforo
Produtor Consumidor com SemaforoProdutor Consumidor com Semaforo
Produtor Consumidor com Semaforo
 
Curso de Java (Parte 3)
 Curso de Java (Parte 3) Curso de Java (Parte 3)
Curso de Java (Parte 3)
 
Java3
Java3Java3
Java3
 
Introdução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxIntrodução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptx
 
Curso Android - 03 Conceitos Chaves
Curso Android - 03 Conceitos ChavesCurso Android - 03 Conceitos Chaves
Curso Android - 03 Conceitos Chaves
 
ava facul uva unijorge (146).pdf
ava facul uva unijorge (146).pdfava facul uva unijorge (146).pdf
ava facul uva unijorge (146).pdf
 
Apresentação aula 2 android
Apresentação aula 2 androidApresentação aula 2 android
Apresentação aula 2 android
 
Programação Defensiva
Programação DefensivaProgramação Defensiva
Programação Defensiva
 
C# 8 e ML.NET
C# 8 e ML.NETC# 8 e ML.NET
C# 8 e ML.NET
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Struts
 
Estrutura de repetição
Estrutura de repetiçãoEstrutura de repetição
Estrutura de repetição
 
Ficha teorica aula_input_reader
Ficha teorica aula_input_readerFicha teorica aula_input_reader
Ficha teorica aula_input_reader
 
ava facul uva unijorge (81).pdf
ava facul uva unijorge (81).pdfava facul uva unijorge (81).pdf
ava facul uva unijorge (81).pdf
 
Capítulo 02 - Cadastro de Alunos e Decisões de Projeto
Capítulo 02 - Cadastro de Alunos e Decisões de ProjetoCapítulo 02 - Cadastro de Alunos e Decisões de Projeto
Capítulo 02 - Cadastro de Alunos e Decisões de Projeto
 
Gerências de Processos: Sincronização
Gerências de Processos: SincronizaçãoGerências de Processos: Sincronização
Gerências de Processos: Sincronização
 
Machine Learning: Classificação de Comentários com Azure ML & Python
Machine Learning: Classificação de Comentários com Azure ML & PythonMachine Learning: Classificação de Comentários com Azure ML & Python
Machine Learning: Classificação de Comentários com Azure ML & Python
 
Gc solution
Gc solutionGc solution
Gc solution
 
Cap04
Cap04Cap04
Cap04
 
Cap04
Cap04Cap04
Cap04
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 

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

  • 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(&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;); }
  • 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.
  • 18.  
  • 19.