ANÁLISE E PROJETO ORIENTADO A
OBJETOS COM MODELAGEM
WEB UTILIZANDO UML
M.Sc. Engº Alex Pinheiro das Graças
CONCEITOS AVANÇADOS DE
ORIENTAÇÃO A OBJETOS
Padrões de Projetos ou Design Patterns
PADRÃO DE PROJETOS
Cada padrão descreve um problema que ocorre e se
 repete em nosso ambiente e então descreve o
 núcleo de uma solução para aquele problema de
 forma que você pode utilizar esta solução um
 milhão de vezes sem repeti-la duas vezes que seja.
     (Alexander, 77 apud Gamma et. al, 1995, pg. 2)




                   M.Sc. Alex Pinheiro das Graças - 2012
PADRÃO DE PROJETOS
   Ganhou popularidade, na área da computação,
    com o livro Design Patterns: Elements of Reusable
    Object-Oriented Software lançado em 1995 por
    Erich Gamma, Richard Helm, Ralph Johnson e
    John Vlisfsides.
       Conhecidos como Gang of Four




                       M.Sc. Alex Pinheiro das Graças - 2012
TIPOS DE PADRÕES
                                        Process Patterns: Building Large-Scale
            De processos               Systems Using Object TechnologyScott W.
             de Software              Amblerhttp://www.ambysoft.com/books/proces
                                                     sPatterns.html



                                       Core J2EE™ Patterns: Best Practices and
             Arquiteturais            Design Strategies Deepak Alur, John Crupi e
                                                      Dan Malks


  Padrões
            De Modelagem                Analysis Patterns: Reusable
                O.O.                    Object Models Martin Fowler


                                      Design Patterns Erich Gamma
              De Projeto               Erich Gamma, Richard Helm,
                                      Ralph Johnson e John Vlissides


            Orientados a                Patterns in Java™, Volume 1
            Linguagens                          Mark Grand


                  M.Sc. Alex Pinheiro das Graças - 2012
PADRÃO DE PROJETOS
   Um Padrão de Projeto é uma solução consolidada
    para um problema recorrente no desenvolvimento e
    manutenção de software orientado a objetos.




                    M.Sc. Alex Pinheiro das Graças - 2012
BENEFÍCIOS
   Padrões de Projetos possuem dois benefícios
    principais:
     1.   Fornecem uma forma de resolver problemas
          relacionados com o desenvolvimento de software
          utilizando soluções comprovadas.
     2.   Design patterns tornam a comunicação entre
          projetistas/arquitetos mais eficiente.




                       M.Sc. Alex Pinheiro das Graças - 2012
BENEFÍCIOS
   Resposta às perguntas
     Qual a Granularidade?
     Quais Classes implementar?
     Qual a interface das Classes?
     Implementação?




                       M.Sc. Alex Pinheiro das Graças - 2012
ENTRETANTO...
   Padrões de projetos adicionam flexibilidade no seu
    software entretanto adicionam camadas extras;
     PODE Complicar o projeto;
     PODE Impactar a Performance;




                     M.Sc. Alex Pinheiro das Graças - 2012
PADRÕES DE PROJETOS
   Os padrões de projetos são divididos em três
    grandes famílias:
     De Criação
     Estrutural
     Comportamental




                       M.Sc. Alex Pinheiro das Graças - 2012
CRIAÇÃO
 Encapsula qual a classe concreta que o sistema
  utiliza;
 Aumenta a flexibilidade
     Qual objeto é criado?
     Como o objeto é criado?




                      M.Sc. Alex Pinheiro das Graças - 2012
CRIAÇÃO - CATÁLOGO
 Abstract Factory
 Builder

 Factory Method

 Prototype

 Singleton




                     M.Sc. Alex Pinheiro das Graças - 2012
FACTORY METHOD

Define uma interface para criar um objeto, mas deixa
a subclasse decidir qual classe instanciar. Factory
Method adia a instanciação das classes, deixando
essa tarefa para as subclasses.




                  M.Sc. Alex Pinheiro das Graças - 2012
FACTORY METHOD




            M.Sc. Alex Pinheiro das Graças - 2012
ABSTRACT FACTORY
   Problema:
     Criar famílias de objetos relacionados entre si.
     O sistema pode escolher famílias de objetos diferentes.
     Não podem ser instanciados partes de famílias
      diferentes.
   Exemplo:
       Um jogo que de corrida com várias épocas,
        dependendo da época que é escolhida, os carros terão
        determinada aparência e propriedades.




                        M.Sc. Alex Pinheiro das Graças - 2012
ABSTRACT FACTORY

Provê uma interface para criar famílias de Objetos
relacionados ou dependentes sem especificar as
classes concretas.




                  M.Sc. Alex Pinheiro das Graças - 2012
ABSTRACT FACTORY




             M.Sc. Alex Pinheiro das Graças - 2012
ABSTRACT FACTORY
   AbstractFactory
       Declara uma interface para operações de criação;
   ConcreteFactory
       Implementa as operações de criação
   AbstractProduct
       Declara uma interface para o objeto criado
   ConcreteProduct
       Define o objeto a ser criado por uma ConcreteFactory




                          M.Sc. Alex Pinheiro das Graças - 2012
ABSTRACT FACTORY
   Quando usar
     Um sistema deve ser configurado com múltiplas
      famílias de produtos;
     Uma família de classes deve ser usada juntas;
     Você deseja revelar apenas os produtos e não suas
      implementações;




                      M.Sc. Alex Pinheiro das Graças - 2012
SINGLETON

Força a existência de apenas uma instância da
classe e provê um ponto padrão de acesso.




                  M.Sc. Alex Pinheiro das Graças - 2012
SINGLETON

   Construtor é privado;
   O atributo singleton e o método
    getInstance são estáticos;
   Os outros atributos e
    operações da Classe não são
    estáticos

   Cada vez que esse método for chamado,
    ele deve checar se já existe uma
    instância da classe e retorná-la, caso
    contrário, ele deve instanciar a classe,
    guardar a referência ao objeto no atributo
    estático da classe e então retorná-lo.
SINGLETON




            M.Sc. Alex Pinheiro das Graças - 2012
PADRÕES ESTRUTURAIS
   Esses padrões de projeto estão interessados em
    como classes e objetos estão dispostos para
    formar estruturas maiores.




                    M.Sc. Alex Pinheiro das Graças - 2012
PADRÕES ESTRUTURAIS - CATÁLOGO
 Adapter
 Bridge

 Composite

 Decorator

 Facade

 Flyweight

 Proxy




              M.Sc. Alex Pinheiro das Graças - 2012
PROXY

Provê um substituto ou um espaço reservado para
outro objeto com o intuito de controlar o acesso a
este objeto.




                  M.Sc. Alex Pinheiro das Graças - 2012
PROXY




        M.Sc. Alex Pinheiro das Graças - 2012
PROXY
   Proxy
     Mantém uma referência que deixa o proxy acessar o
      objeto real.
     Prove uma interface identica ao objeto real.
     Controla acesso para o objeto real e pode ser
      responsável por criá-lo.
   Subject
       Define uma interface comum.
   RealSubject
       Define o objeto real que será representado pelo Proxy




                         M.Sc. Alex Pinheiro das Graças - 2012
PROXY
   Exemplos de utilização
     Hibernate: quando o hibernate carrega objetos em
      modo lazy ele traz proxy dos objetos.
     Java RMI cria proxies para fazer acesso remoto.
     Quando estamos utilizando uma conexão lenta e vemos
      somente uma quadrado para a figura estamos vendo
      um proxy.
     Segurança, o proxy pode ser utilizado para averiguar o
      usuário autenticado e somente após a verificação
      chamar a função pretendida.




                       M.Sc. Alex Pinheiro das Graças - 2012
COMPOSITE

Compões objetos em árvore para representar
hierarquias todo-parte. Composições leva clientes a
tratar objetos individuais e composições da mesma
maneira.




                  M.Sc. Alex Pinheiro das Graças - 2012
COMPOSITE




            M.Sc. Alex Pinheiro das Graças - 2012
COMPOSITE
   Participantes
     Componente
        Interface dos componentes

     Folha
        Representa folhas da árvore

     Composição
        Define o comportamento de componentes que tem

         filhos
     Cliente
        Manipula os objetos a partir da interface de

         Componente



                      M.Sc. Alex Pinheiro das Graças - 2012
DECORATOR
   Problema
       Necessidade de adicionar responsabilidade em tempo
        de execução a um objeto.
   Exemplo
       Uma feijoada é adicionado diversos ingredientes.
        Quando um ingrediente é adicionado é necessário
        modificar o calculo de valor da feijoada.




                        M.Sc. Alex Pinheiro das Graças - 2012
DECORATOR

Adiciona responsabilidades para um objeto
dinamicamente. Oferece uma alternativa flexível por
meio de subclasses para extender funcionalidade dos
objetos.




                  M.Sc. Alex Pinheiro das Graças - 2012
DECORATOR




            M.Sc. Alex Pinheiro das Graças - 2012
DECORATOR
   Component
       Define a interface para o objeto que poderá ter
        funcionalidades adicionadas.
   ConcreteComponent
       O objeto que poderá ter responsabilidades adicionadas
   Decorator
       Mantêm uma referência para um objeto Component e
        define uma interface conforme a interface Component.
   ConcreteDecorator
       Adiciona responsabilidade ao Componente




                          M.Sc. Alex Pinheiro das Graças - 2012
DECORATOR




            M.Sc. Alex Pinheiro das Graças - 2012
DECORATOR
   As classes de I/O do JAVA utilizam o padrão
    decorator
     As classes básicas são InputStream, OutputStream,
      Reader.
     Os comportamentos adicionais são por meio de
      decorações
         BufferedStream: adiciona buffers para o Stream
         Data Stream: permite o I/O de tipos primitivos

         Pushback Stream: permite a operação Undo




                          M.Sc. Alex Pinheiro das Graças - 2012
COMPORTAMENTAL
   Padrões de Projeto comportamentais trabalham
    com algoritmos e definição de responsabilidade
    entre objetos.




                     M.Sc. Alex Pinheiro das Graças - 2012
COMPORTAMENTAL - CATÁLOGO
 Command                          Visitor
 Observer

 Chain of Responsability

 Interpreter

 Iterator

 Mediator

 Memento

 State

 Strategy

 Template Method



                   M.Sc. Alex Pinheiro das Graças - 2012
COMMAND
   Problema
       Não é possível prever com antecedência qual a ação de
        um objeto;
           Exemplo um controle remoto custumizável
       Necessidade de implementar o comando desfazer;




                            M.Sc. Alex Pinheiro das Graças - 2012
COMMAND

 Encapsula requisições em objetos, possibilitando a
 parametrização de clientes para diferente
 requisições. Além disso possibilita a criação de
 logs, filas e a ação “desfazer”.




                 M.Sc. Alex Pinheiro das Graças - 2012
COMMAND




          M.Sc. Alex Pinheiro das Graças - 2012
COMMAND
   Command
       Declara uma interface para executar uma operação
   ConcreteCommand
       Define um relacionamento entre um objeto Receiver e
        uma ação
   Cliente
       Cria um ConcreteCommand e atribui ao receptor
   Invoker
       Pede o comando para executar a requisição
   Receiver
       Sabe como executar as operações. Qualquer classe pode
        ser um Receiver

                         M.Sc. Alex Pinheiro das Graças - 2012
COMMAND - EXTENSÕES
   Criação de filas:
       Utilizado em aplicações síncronas, onde um executor
        de comandos pode receber um novo comando
        enquanto ainda está executando um comando anterior.
           Exemplo: Native Command Queuing. O HardDisk recebe
            várias ações. Podendo ordenar a fila dos comandos para
            otimizar o acesso ao disco.




                            M.Sc. Alex Pinheiro das Graças - 2012
COMMAND - EXTENSÕES
   Desfazer e Refazer:
       Necessidade de criar a funcionalidade de desfazer e
        refazer em uma aplicação.
           Exemplo: Criação do comando desfazer em um editor de
            Texto.




                            M.Sc. Alex Pinheiro das Graças - 2012
COMMAND - EXTENSÕES




             M.Sc. Alex Pinheiro das Graças - 2012
OBSERVER
   Problema
       Quando um objeto X é modificado, outros objetos
        devem ser atualizados para refletir o estado do objeto X
        atualizado.




                         M.Sc. Alex Pinheiro das Graças - 2012
OBSERVER

Define uma dependência um para muitos entre
objetos então quando o estado de um objeto é
modificado, todos os objetos dependentes são
atualizados automaticamente.




                 M.Sc. Alex Pinheiro das Graças - 2012
OBSERVER




           M.Sc. Alex Pinheiro das Graças - 2012
OBSERVER
   Observer
       Define uma interface de atualização para objetos que
        devem ser notificados da alteração
   Subject
       Conhece os seus observadores. Qualquer observer pode
        observar um Subject
   ConcreteObserver
       Mantem uma referência para um ConcreteSubject
       Implementa a interface de atualização
   ConcreteSubject
       Envia notificação quando o estado do objeto é alterado



                          M.Sc. Alex Pinheiro das Graças - 2012
EXERCÍCIO
   Modifique as classes,
    principalmente o método
    measurementsChanged
    para utilizar o objeto
    WeatherData para
    atualizar três exibições:
    condições atuais,
    Estatísticas e uma
    previsão.
   O método atualizar
    mostra os valores na
    tela.

Baseado no Livro Use a Cabeça - Padrões de Projeto
RESPOSTA EXERCÍCIO
 O conhecimento de
  padrões de projetos
  leva-nos a encontrar
  soluções rapidamente.
 Soluções amplamente
  testadas
 Facilitam o
  entendimento por
  outros programadores.

Padrões de projeto

  • 1.
    ANÁLISE E PROJETOORIENTADO A OBJETOS COM MODELAGEM WEB UTILIZANDO UML M.Sc. Engº Alex Pinheiro das Graças
  • 2.
    CONCEITOS AVANÇADOS DE ORIENTAÇÃOA OBJETOS Padrões de Projetos ou Design Patterns
  • 3.
    PADRÃO DE PROJETOS Cadapadrão descreve um problema que ocorre e se repete em nosso ambiente e então descreve o núcleo de uma solução para aquele problema de forma que você pode utilizar esta solução um milhão de vezes sem repeti-la duas vezes que seja. (Alexander, 77 apud Gamma et. al, 1995, pg. 2) M.Sc. Alex Pinheiro das Graças - 2012
  • 4.
    PADRÃO DE PROJETOS  Ganhou popularidade, na área da computação, com o livro Design Patterns: Elements of Reusable Object-Oriented Software lançado em 1995 por Erich Gamma, Richard Helm, Ralph Johnson e John Vlisfsides.  Conhecidos como Gang of Four M.Sc. Alex Pinheiro das Graças - 2012
  • 5.
    TIPOS DE PADRÕES Process Patterns: Building Large-Scale De processos Systems Using Object TechnologyScott W. de Software Amblerhttp://www.ambysoft.com/books/proces sPatterns.html Core J2EE™ Patterns: Best Practices and Arquiteturais Design Strategies Deepak Alur, John Crupi e Dan Malks Padrões De Modelagem Analysis Patterns: Reusable O.O. Object Models Martin Fowler Design Patterns Erich Gamma De Projeto Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides Orientados a Patterns in Java™, Volume 1 Linguagens Mark Grand M.Sc. Alex Pinheiro das Graças - 2012
  • 6.
    PADRÃO DE PROJETOS  Um Padrão de Projeto é uma solução consolidada para um problema recorrente no desenvolvimento e manutenção de software orientado a objetos. M.Sc. Alex Pinheiro das Graças - 2012
  • 7.
    BENEFÍCIOS  Padrões de Projetos possuem dois benefícios principais: 1. Fornecem uma forma de resolver problemas relacionados com o desenvolvimento de software utilizando soluções comprovadas. 2. Design patterns tornam a comunicação entre projetistas/arquitetos mais eficiente. M.Sc. Alex Pinheiro das Graças - 2012
  • 8.
    BENEFÍCIOS  Resposta às perguntas  Qual a Granularidade?  Quais Classes implementar?  Qual a interface das Classes?  Implementação? M.Sc. Alex Pinheiro das Graças - 2012
  • 9.
    ENTRETANTO...  Padrões de projetos adicionam flexibilidade no seu software entretanto adicionam camadas extras;  PODE Complicar o projeto;  PODE Impactar a Performance; M.Sc. Alex Pinheiro das Graças - 2012
  • 10.
    PADRÕES DE PROJETOS  Os padrões de projetos são divididos em três grandes famílias:  De Criação  Estrutural  Comportamental M.Sc. Alex Pinheiro das Graças - 2012
  • 11.
    CRIAÇÃO  Encapsula quala classe concreta que o sistema utiliza;  Aumenta a flexibilidade  Qual objeto é criado?  Como o objeto é criado? M.Sc. Alex Pinheiro das Graças - 2012
  • 12.
    CRIAÇÃO - CATÁLOGO Abstract Factory  Builder  Factory Method  Prototype  Singleton M.Sc. Alex Pinheiro das Graças - 2012
  • 13.
    FACTORY METHOD Define umainterface para criar um objeto, mas deixa a subclasse decidir qual classe instanciar. Factory Method adia a instanciação das classes, deixando essa tarefa para as subclasses. M.Sc. Alex Pinheiro das Graças - 2012
  • 14.
    FACTORY METHOD M.Sc. Alex Pinheiro das Graças - 2012
  • 15.
    ABSTRACT FACTORY  Problema:  Criar famílias de objetos relacionados entre si.  O sistema pode escolher famílias de objetos diferentes.  Não podem ser instanciados partes de famílias diferentes.  Exemplo:  Um jogo que de corrida com várias épocas, dependendo da época que é escolhida, os carros terão determinada aparência e propriedades. M.Sc. Alex Pinheiro das Graças - 2012
  • 16.
    ABSTRACT FACTORY Provê umainterface para criar famílias de Objetos relacionados ou dependentes sem especificar as classes concretas. M.Sc. Alex Pinheiro das Graças - 2012
  • 17.
    ABSTRACT FACTORY M.Sc. Alex Pinheiro das Graças - 2012
  • 18.
    ABSTRACT FACTORY  AbstractFactory  Declara uma interface para operações de criação;  ConcreteFactory  Implementa as operações de criação  AbstractProduct  Declara uma interface para o objeto criado  ConcreteProduct  Define o objeto a ser criado por uma ConcreteFactory M.Sc. Alex Pinheiro das Graças - 2012
  • 19.
    ABSTRACT FACTORY  Quando usar  Um sistema deve ser configurado com múltiplas famílias de produtos;  Uma família de classes deve ser usada juntas;  Você deseja revelar apenas os produtos e não suas implementações; M.Sc. Alex Pinheiro das Graças - 2012
  • 20.
    SINGLETON Força a existênciade apenas uma instância da classe e provê um ponto padrão de acesso. M.Sc. Alex Pinheiro das Graças - 2012
  • 21.
    SINGLETON  Construtor é privado;  O atributo singleton e o método getInstance são estáticos;  Os outros atributos e operações da Classe não são estáticos  Cada vez que esse método for chamado, ele deve checar se já existe uma instância da classe e retorná-la, caso contrário, ele deve instanciar a classe, guardar a referência ao objeto no atributo estático da classe e então retorná-lo.
  • 22.
    SINGLETON M.Sc. Alex Pinheiro das Graças - 2012
  • 23.
    PADRÕES ESTRUTURAIS  Esses padrões de projeto estão interessados em como classes e objetos estão dispostos para formar estruturas maiores. M.Sc. Alex Pinheiro das Graças - 2012
  • 24.
    PADRÕES ESTRUTURAIS -CATÁLOGO  Adapter  Bridge  Composite  Decorator  Facade  Flyweight  Proxy M.Sc. Alex Pinheiro das Graças - 2012
  • 25.
    PROXY Provê um substitutoou um espaço reservado para outro objeto com o intuito de controlar o acesso a este objeto. M.Sc. Alex Pinheiro das Graças - 2012
  • 26.
    PROXY M.Sc. Alex Pinheiro das Graças - 2012
  • 27.
    PROXY  Proxy  Mantém uma referência que deixa o proxy acessar o objeto real.  Prove uma interface identica ao objeto real.  Controla acesso para o objeto real e pode ser responsável por criá-lo.  Subject  Define uma interface comum.  RealSubject  Define o objeto real que será representado pelo Proxy M.Sc. Alex Pinheiro das Graças - 2012
  • 28.
    PROXY  Exemplos de utilização  Hibernate: quando o hibernate carrega objetos em modo lazy ele traz proxy dos objetos.  Java RMI cria proxies para fazer acesso remoto.  Quando estamos utilizando uma conexão lenta e vemos somente uma quadrado para a figura estamos vendo um proxy.  Segurança, o proxy pode ser utilizado para averiguar o usuário autenticado e somente após a verificação chamar a função pretendida. M.Sc. Alex Pinheiro das Graças - 2012
  • 29.
    COMPOSITE Compões objetos emárvore para representar hierarquias todo-parte. Composições leva clientes a tratar objetos individuais e composições da mesma maneira. M.Sc. Alex Pinheiro das Graças - 2012
  • 30.
    COMPOSITE M.Sc. Alex Pinheiro das Graças - 2012
  • 31.
    COMPOSITE  Participantes  Componente  Interface dos componentes  Folha  Representa folhas da árvore  Composição  Define o comportamento de componentes que tem filhos  Cliente  Manipula os objetos a partir da interface de Componente M.Sc. Alex Pinheiro das Graças - 2012
  • 32.
    DECORATOR  Problema  Necessidade de adicionar responsabilidade em tempo de execução a um objeto.  Exemplo  Uma feijoada é adicionado diversos ingredientes. Quando um ingrediente é adicionado é necessário modificar o calculo de valor da feijoada. M.Sc. Alex Pinheiro das Graças - 2012
  • 33.
    DECORATOR Adiciona responsabilidades paraum objeto dinamicamente. Oferece uma alternativa flexível por meio de subclasses para extender funcionalidade dos objetos. M.Sc. Alex Pinheiro das Graças - 2012
  • 34.
    DECORATOR M.Sc. Alex Pinheiro das Graças - 2012
  • 35.
    DECORATOR  Component  Define a interface para o objeto que poderá ter funcionalidades adicionadas.  ConcreteComponent  O objeto que poderá ter responsabilidades adicionadas  Decorator  Mantêm uma referência para um objeto Component e define uma interface conforme a interface Component.  ConcreteDecorator  Adiciona responsabilidade ao Componente M.Sc. Alex Pinheiro das Graças - 2012
  • 36.
    DECORATOR M.Sc. Alex Pinheiro das Graças - 2012
  • 37.
    DECORATOR  As classes de I/O do JAVA utilizam o padrão decorator  As classes básicas são InputStream, OutputStream, Reader.  Os comportamentos adicionais são por meio de decorações  BufferedStream: adiciona buffers para o Stream  Data Stream: permite o I/O de tipos primitivos  Pushback Stream: permite a operação Undo M.Sc. Alex Pinheiro das Graças - 2012
  • 38.
    COMPORTAMENTAL  Padrões de Projeto comportamentais trabalham com algoritmos e definição de responsabilidade entre objetos. M.Sc. Alex Pinheiro das Graças - 2012
  • 39.
    COMPORTAMENTAL - CATÁLOGO Command  Visitor  Observer  Chain of Responsability  Interpreter  Iterator  Mediator  Memento  State  Strategy  Template Method M.Sc. Alex Pinheiro das Graças - 2012
  • 40.
    COMMAND  Problema  Não é possível prever com antecedência qual a ação de um objeto;  Exemplo um controle remoto custumizável  Necessidade de implementar o comando desfazer; M.Sc. Alex Pinheiro das Graças - 2012
  • 41.
    COMMAND Encapsula requisiçõesem objetos, possibilitando a parametrização de clientes para diferente requisições. Além disso possibilita a criação de logs, filas e a ação “desfazer”. M.Sc. Alex Pinheiro das Graças - 2012
  • 42.
    COMMAND M.Sc. Alex Pinheiro das Graças - 2012
  • 43.
    COMMAND  Command  Declara uma interface para executar uma operação  ConcreteCommand  Define um relacionamento entre um objeto Receiver e uma ação  Cliente  Cria um ConcreteCommand e atribui ao receptor  Invoker  Pede o comando para executar a requisição  Receiver  Sabe como executar as operações. Qualquer classe pode ser um Receiver M.Sc. Alex Pinheiro das Graças - 2012
  • 44.
    COMMAND - EXTENSÕES  Criação de filas:  Utilizado em aplicações síncronas, onde um executor de comandos pode receber um novo comando enquanto ainda está executando um comando anterior.  Exemplo: Native Command Queuing. O HardDisk recebe várias ações. Podendo ordenar a fila dos comandos para otimizar o acesso ao disco. M.Sc. Alex Pinheiro das Graças - 2012
  • 45.
    COMMAND - EXTENSÕES  Desfazer e Refazer:  Necessidade de criar a funcionalidade de desfazer e refazer em uma aplicação.  Exemplo: Criação do comando desfazer em um editor de Texto. M.Sc. Alex Pinheiro das Graças - 2012
  • 46.
    COMMAND - EXTENSÕES M.Sc. Alex Pinheiro das Graças - 2012
  • 47.
    OBSERVER  Problema  Quando um objeto X é modificado, outros objetos devem ser atualizados para refletir o estado do objeto X atualizado. M.Sc. Alex Pinheiro das Graças - 2012
  • 48.
    OBSERVER Define uma dependênciaum para muitos entre objetos então quando o estado de um objeto é modificado, todos os objetos dependentes são atualizados automaticamente. M.Sc. Alex Pinheiro das Graças - 2012
  • 49.
    OBSERVER M.Sc. Alex Pinheiro das Graças - 2012
  • 50.
    OBSERVER  Observer  Define uma interface de atualização para objetos que devem ser notificados da alteração  Subject  Conhece os seus observadores. Qualquer observer pode observar um Subject  ConcreteObserver  Mantem uma referência para um ConcreteSubject  Implementa a interface de atualização  ConcreteSubject  Envia notificação quando o estado do objeto é alterado M.Sc. Alex Pinheiro das Graças - 2012
  • 51.
    EXERCÍCIO  Modifique as classes, principalmente o método measurementsChanged para utilizar o objeto WeatherData para atualizar três exibições: condições atuais, Estatísticas e uma previsão.  O método atualizar mostra os valores na tela. Baseado no Livro Use a Cabeça - Padrões de Projeto
  • 52.
    RESPOSTA EXERCÍCIO  Oconhecimento de padrões de projetos leva-nos a encontrar soluções rapidamente.  Soluções amplamente testadas  Facilitam o entendimento por outros programadores.