Padrões de projeto

2,202 views

Published on

Slides da aula de Padrões de Projeto

Published in: Technology

Padrões de projeto

  1. 1. ANÁLISE E PROJETO ORIENTADO AOBJETOS COM MODELAGEMWEB UTILIZANDO UMLM.Sc. Engº Alex Pinheiro das Graças
  2. 2. CONCEITOS AVANÇADOS DEORIENTAÇÃO A OBJETOSPadrões de Projetos ou Design Patterns
  3. 3. PADRÃO DE PROJETOSCada 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
  4. 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. 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. 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. 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. 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. 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. 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. 11. 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
  12. 12. CRIAÇÃO - CATÁLOGO Abstract Factory Builder Factory Method Prototype Singleton M.Sc. Alex Pinheiro das Graças - 2012
  13. 13. FACTORY METHODDefine uma interface para criar um objeto, mas deixaa subclasse decidir qual classe instanciar. FactoryMethod adia a instanciação das classes, deixandoessa tarefa para as subclasses. M.Sc. Alex Pinheiro das Graças - 2012
  14. 14. FACTORY METHOD M.Sc. Alex Pinheiro das Graças - 2012
  15. 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. 16. ABSTRACT FACTORYProvê uma interface para criar famílias de Objetosrelacionados ou dependentes sem especificar asclasses concretas. M.Sc. Alex Pinheiro das Graças - 2012
  17. 17. ABSTRACT FACTORY M.Sc. Alex Pinheiro das Graças - 2012
  18. 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. 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. 20. SINGLETONForça a existência de apenas uma instância daclasse e provê um ponto padrão de acesso. M.Sc. Alex Pinheiro das Graças - 2012
  21. 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. 22. SINGLETON M.Sc. Alex Pinheiro das Graças - 2012
  23. 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. 24. PADRÕES ESTRUTURAIS - CATÁLOGO Adapter Bridge Composite Decorator Facade Flyweight Proxy M.Sc. Alex Pinheiro das Graças - 2012
  25. 25. PROXYProvê um substituto ou um espaço reservado paraoutro objeto com o intuito de controlar o acesso aeste objeto. M.Sc. Alex Pinheiro das Graças - 2012
  26. 26. PROXY M.Sc. Alex Pinheiro das Graças - 2012
  27. 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. 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. 29. COMPOSITECompões objetos em árvore para representarhierarquias todo-parte. Composições leva clientes atratar objetos individuais e composições da mesmamaneira. M.Sc. Alex Pinheiro das Graças - 2012
  30. 30. COMPOSITE M.Sc. Alex Pinheiro das Graças - 2012
  31. 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. 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. 33. DECORATORAdiciona responsabilidades para um objetodinamicamente. Oferece uma alternativa flexível pormeio de subclasses para extender funcionalidade dosobjetos. M.Sc. Alex Pinheiro das Graças - 2012
  34. 34. DECORATOR M.Sc. Alex Pinheiro das Graças - 2012
  35. 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. 36. DECORATOR M.Sc. Alex Pinheiro das Graças - 2012
  37. 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. 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. 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. 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. 41. 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
  42. 42. COMMAND M.Sc. Alex Pinheiro das Graças - 2012
  43. 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. 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. 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. 46. COMMAND - EXTENSÕES M.Sc. Alex Pinheiro das Graças - 2012
  47. 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. 48. OBSERVERDefine uma dependência um para muitos entreobjetos então quando o estado de um objeto émodificado, todos os objetos dependentes sãoatualizados automaticamente. M.Sc. Alex Pinheiro das Graças - 2012
  49. 49. OBSERVER M.Sc. Alex Pinheiro das Graças - 2012
  50. 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. 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. 52. 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.

×