Padrões de Projeto OBSERVER Juliana da Silva Cindra e Raquel Pereira Crespo
Observer Padrão comportamental Está na camada  Model  da Arquitetura MVC Juliana da Silva Cindra e Raquel Pereira Crespo
Intenção O  Observer  é um padrão de projeto de software que define uma dependência  um-para-muitos  entre objetos de modo que quando um objeto muda o estado, todos seus dependentes sejam notificados e atualizados automaticamente. [GoF] Permite que objetos interessados sejam avisados da mudança de estado ou outros eventos ocorrendo num outro objeto. Juliana da Silva Cindra e Raquel Pereira Crespo
Motivação Um objeto que possua agregações deve permitir que seus elementos sejam acessados sem que sua estrutura interna seja exposta. De uma maneira geral pode-se desejar que estes elementos sejam percorridos em várias ordens.  Juliana da Silva Cindra e Raquel Pereira Crespo
Motivação Os objetos-chave neste padrão são: Subject (assunto) Observer (observador) Subject pode ter um número qualquer de observadores dependentes. É o publicador de notificações . Juliana da Silva Cindra e Raquel Pereira Crespo
Motivação Juliana da Silva Cindra e Raquel Pereira Crespo
Motivação Suponha que você deseja fornecer várias visões distintas de um mesmo objeto que funciona como um repositório de dados; Cada visão é criada por um objeto observador independente; Caso cada observador seja diretamente conectado ao repositório, isto criará uma dependência do repositório com relação aos diferentes observadores, o que lhe reduzirá a reusabilidade e flexibilidade; O padrão Observer descreve uma forma de manutenção destes relacionamentos de modo que observadores e repositórios sejam facilmente substituídos. Juliana da Silva Cindra e Raquel Pereira Crespo
Aplicabilidade Quando uma abstração apresenta dois aspectos, um dependente do outro. Encapsulando estes aspectos em objetos separados permite que você os varie e reutilize de forma independente; Quando uma modificação em um objeto requer modificação em outros, e você não sabe (em tempo de programação) quantos objetos precisam ser modificados; Quando um objeto deve ser apto a notificar outros objetos sem saber quem são estes objetos. Em outras palavras, quando você os quer fracamente acoplados. Juliana da Silva Cindra e Raquel Pereira Crespo
Estrutura Juliana da Silva Cindra e Raquel Pereira Crespo
Exemplo Juliana da Silva Cindra e Raquel Pereira Crespo Uma contrução onde existem vários operários; Uma sirene toca informando uma mudança de estado… O alarme da sirene é uma mensagem enviada aos observadores (Funcionários), que pode ser um intervalo, término do expediente, etc.
Exemplo Juliana da Silva Cindra e Raquel Pereira Crespo
Exemplo Juliana da Silva Cindra e Raquel Pereira Crespo
Exemplo Juliana da Silva Cindra e Raquel Pereira Crespo
Exemplo Juliana da Silva Cindra e Raquel Pereira Crespo
Consequências Acoplamento abstrato entre Subject e Observer: variação independente de observáveis e observadores; facilidade para adicionar observadores sem modificar o observável ou os outros observadores; Suporte a comunicação broadcast; Atualizações inesperadas. Juliana da Silva Cindra e Raquel Pereira Crespo
Referência bibliográfica: Gamma, E., Helm, R., Johnson, R. e Vlissides, J. (2000). “Padrões de Projeto: soluções reutilizáveis de software orientado a objetos”, Porto Alegre. Bookman. Juliana da Silva Cindra e Raquel Pereira Crespo
Sites pesquisados: http://www.mariosam.com/desenvolvimento/designpatterns/design-patterns-padrao-observer http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/arqu/observer.htm http://www.cic.unb.br/~jhcf/MyBooks/iess/Patterns/BehavioralPatterns-82slides.pdf http://www.textolivre.com.br/artigos/17987-abordando-a-arquitetura-mvc-e-design-patterns-observer-composite-strategy?format=pdf http://blog.rafaelcapucho.com/java/padroes-de-projeto-observer-modelagem-uml.html http://pt.wikipedia.org/wiki/Observer   Juliana da Silva Cindra e Raquel Pereira Crespo
Sites pesquisados: http://s2i.das.ufsc.br/tikiwiki/apresentacoes/padroes_de_projeto.pdf http://www.noginfo.com.br/arquivos/CC_TEC_08.pdf http://www.deinf.ufma.br/~vidal/observer.pdf Juliana da Silva Cindra e Raquel Pereira Crespo
Dupla: Juliana da Silva Cindra [email_address] Raquel Pereira Crespo raquelpcrespo@gmail.com  Juliana da Silva Cindra e Raquel Pereira Crespo

Padrões de Projeto - Observer

  • 1.
    Padrões de ProjetoOBSERVER Juliana da Silva Cindra e Raquel Pereira Crespo
  • 2.
    Observer Padrão comportamentalEstá na camada Model da Arquitetura MVC Juliana da Silva Cindra e Raquel Pereira Crespo
  • 3.
    Intenção O Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado, todos seus dependentes sejam notificados e atualizados automaticamente. [GoF] Permite que objetos interessados sejam avisados da mudança de estado ou outros eventos ocorrendo num outro objeto. Juliana da Silva Cindra e Raquel Pereira Crespo
  • 4.
    Motivação Um objetoque possua agregações deve permitir que seus elementos sejam acessados sem que sua estrutura interna seja exposta. De uma maneira geral pode-se desejar que estes elementos sejam percorridos em várias ordens. Juliana da Silva Cindra e Raquel Pereira Crespo
  • 5.
    Motivação Os objetos-chaveneste padrão são: Subject (assunto) Observer (observador) Subject pode ter um número qualquer de observadores dependentes. É o publicador de notificações . Juliana da Silva Cindra e Raquel Pereira Crespo
  • 6.
    Motivação Juliana daSilva Cindra e Raquel Pereira Crespo
  • 7.
    Motivação Suponha quevocê deseja fornecer várias visões distintas de um mesmo objeto que funciona como um repositório de dados; Cada visão é criada por um objeto observador independente; Caso cada observador seja diretamente conectado ao repositório, isto criará uma dependência do repositório com relação aos diferentes observadores, o que lhe reduzirá a reusabilidade e flexibilidade; O padrão Observer descreve uma forma de manutenção destes relacionamentos de modo que observadores e repositórios sejam facilmente substituídos. Juliana da Silva Cindra e Raquel Pereira Crespo
  • 8.
    Aplicabilidade Quando umaabstração apresenta dois aspectos, um dependente do outro. Encapsulando estes aspectos em objetos separados permite que você os varie e reutilize de forma independente; Quando uma modificação em um objeto requer modificação em outros, e você não sabe (em tempo de programação) quantos objetos precisam ser modificados; Quando um objeto deve ser apto a notificar outros objetos sem saber quem são estes objetos. Em outras palavras, quando você os quer fracamente acoplados. Juliana da Silva Cindra e Raquel Pereira Crespo
  • 9.
    Estrutura Juliana daSilva Cindra e Raquel Pereira Crespo
  • 10.
    Exemplo Juliana daSilva Cindra e Raquel Pereira Crespo Uma contrução onde existem vários operários; Uma sirene toca informando uma mudança de estado… O alarme da sirene é uma mensagem enviada aos observadores (Funcionários), que pode ser um intervalo, término do expediente, etc.
  • 11.
    Exemplo Juliana daSilva Cindra e Raquel Pereira Crespo
  • 12.
    Exemplo Juliana daSilva Cindra e Raquel Pereira Crespo
  • 13.
    Exemplo Juliana daSilva Cindra e Raquel Pereira Crespo
  • 14.
    Exemplo Juliana daSilva Cindra e Raquel Pereira Crespo
  • 15.
    Consequências Acoplamento abstratoentre Subject e Observer: variação independente de observáveis e observadores; facilidade para adicionar observadores sem modificar o observável ou os outros observadores; Suporte a comunicação broadcast; Atualizações inesperadas. Juliana da Silva Cindra e Raquel Pereira Crespo
  • 16.
    Referência bibliográfica: Gamma,E., Helm, R., Johnson, R. e Vlissides, J. (2000). “Padrões de Projeto: soluções reutilizáveis de software orientado a objetos”, Porto Alegre. Bookman. Juliana da Silva Cindra e Raquel Pereira Crespo
  • 17.
    Sites pesquisados: http://www.mariosam.com/desenvolvimento/designpatterns/design-patterns-padrao-observerhttp://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/arqu/observer.htm http://www.cic.unb.br/~jhcf/MyBooks/iess/Patterns/BehavioralPatterns-82slides.pdf http://www.textolivre.com.br/artigos/17987-abordando-a-arquitetura-mvc-e-design-patterns-observer-composite-strategy?format=pdf http://blog.rafaelcapucho.com/java/padroes-de-projeto-observer-modelagem-uml.html http://pt.wikipedia.org/wiki/Observer Juliana da Silva Cindra e Raquel Pereira Crespo
  • 18.
    Sites pesquisados: http://s2i.das.ufsc.br/tikiwiki/apresentacoes/padroes_de_projeto.pdfhttp://www.noginfo.com.br/arquivos/CC_TEC_08.pdf http://www.deinf.ufma.br/~vidal/observer.pdf Juliana da Silva Cindra e Raquel Pereira Crespo
  • 19.
    Dupla: Juliana daSilva Cindra [email_address] Raquel Pereira Crespo raquelpcrespo@gmail.com Juliana da Silva Cindra e Raquel Pereira Crespo