Your SlideShare is downloading. ×
Padrões de projeto
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Padrões de projeto

1,615
views

Published on

Slides da aula de Padrões de Projeto

Slides da aula de Padrões de Projeto

Published in: Technology

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,615
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. ANÁLISE E PROJETO ORIENTADO AOBJETOS COM MODELAGEMWEB UTILIZANDO UMLM.Sc. Engº Alex Pinheiro das Graças
  • 2. CONCEITOS AVANÇADOS DEORIENTAÇÃO A OBJETOSPadrões de Projetos ou Design Patterns
  • 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. 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 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. CRIAÇÃO - CATÁLOGO Abstract Factory Builder Factory Method Prototype Singleton M.Sc. Alex Pinheiro das Graças - 2012
  • 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. 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 FACTORYProvê uma interface para criar famílias de Objetosrelacionados ou dependentes sem especificar asclasses 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. 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. 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. 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. 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. 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. 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. 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. 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çõ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. 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. 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. 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 O conhecimento de padrões de projetos leva-nos a encontrar soluções rapidamente. Soluções amplamente testadas Facilitam o entendimento por outros programadores.