design patterns fundamentos da engenharia de software
TRANSCRIPT
![Page 1: Design Patterns Fundamentos da Engenharia de Software](https://reader036.vdocuments.pub/reader036/viewer/2022062318/552fc130497959413d8d4c3a/html5/thumbnails/1.jpg)
Design Patterns
Fundamentos da Engenharia de Software
![Page 2: Design Patterns Fundamentos da Engenharia de Software](https://reader036.vdocuments.pub/reader036/viewer/2022062318/552fc130497959413d8d4c3a/html5/thumbnails/2.jpg)
O que são design patterns?
• São técnicas exaustivamente testadas, aprovadas e documentadas, baseadas em experiências anteriores, para solução de um problema genérico em um contexto específico que ocorre com certa freqüência em projetos de software orientados a objetos.
![Page 3: Design Patterns Fundamentos da Engenharia de Software](https://reader036.vdocuments.pub/reader036/viewer/2022062318/552fc130497959413d8d4c3a/html5/thumbnails/3.jpg)
Elementos da descrição de um pattern.
• Nome do pattern
• Propósito
• Aplicabilidade
• Estrutura
• Conseqüências
• Patterns relacionados
![Page 4: Design Patterns Fundamentos da Engenharia de Software](https://reader036.vdocuments.pub/reader036/viewer/2022062318/552fc130497959413d8d4c3a/html5/thumbnails/4.jpg)
GoF
• Os autores Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides, conhecidos como “The Gang of Four” ou GoF, propõem 23 patterns em seu livro. Estes patterns são a base para estudos mais aprofundados sobre o assunto.
![Page 5: Design Patterns Fundamentos da Engenharia de Software](https://reader036.vdocuments.pub/reader036/viewer/2022062318/552fc130497959413d8d4c3a/html5/thumbnails/5.jpg)
Factory Method
• Propósito
Define uma interface para criação de um objeto, mas deixa as subclasses decidirem qual classe a ser instanciada. O Factory Method permite a uma classe delegar a instanciação às subclasses.
• Estrutura
![Page 6: Design Patterns Fundamentos da Engenharia de Software](https://reader036.vdocuments.pub/reader036/viewer/2022062318/552fc130497959413d8d4c3a/html5/thumbnails/6.jpg)
Singleton
• Estrutura
• Propósito
Garante que uma classe tenha apenas uma instância e provê um ponto de acesso global a ela.
![Page 7: Design Patterns Fundamentos da Engenharia de Software](https://reader036.vdocuments.pub/reader036/viewer/2022062318/552fc130497959413d8d4c3a/html5/thumbnails/7.jpg)
Façade
• Propósito
Provê uma interface unificada para um conjunto de interfaces em um subsistema. O Façade define uma interface de mais alto nível que torna mais fácil o uso do subsistema.
• Estrutura
![Page 8: Design Patterns Fundamentos da Engenharia de Software](https://reader036.vdocuments.pub/reader036/viewer/2022062318/552fc130497959413d8d4c3a/html5/thumbnails/8.jpg)
Decorator
• Propósito
Agrega responsabilidades adicionais a um objeto dinamicamente. O Decorator provê uma alternativa flexível à criação de subclasses para extensão de funcionalidades (troca herança por delegação).
• Estrutura
![Page 9: Design Patterns Fundamentos da Engenharia de Software](https://reader036.vdocuments.pub/reader036/viewer/2022062318/552fc130497959413d8d4c3a/html5/thumbnails/9.jpg)
Composite
• Propósito
Compõe objetos em estrutura de árvore para representar estruturas do tipo todo-partes. Permite que os clientes tratem objetos individuais e composições de objetos de maneira uniforme.
• Estrutura
![Page 10: Design Patterns Fundamentos da Engenharia de Software](https://reader036.vdocuments.pub/reader036/viewer/2022062318/552fc130497959413d8d4c3a/html5/thumbnails/10.jpg)
Iterator
• Propósito
Provê um modo de acessar seqüencialmente os elementos de um objeto agregado sem expor sua representação básica.
• Estrutura
![Page 11: Design Patterns Fundamentos da Engenharia de Software](https://reader036.vdocuments.pub/reader036/viewer/2022062318/552fc130497959413d8d4c3a/html5/thumbnails/11.jpg)
Strategy
• Propósito
Define uma família de algoritmos, encapsula cada um deles e faz com que eles sejam intercambiáveis. O Strategy permite que o algoritmo varie independentemente dos clientes que o utilizam.
• Estrutura
![Page 12: Design Patterns Fundamentos da Engenharia de Software](https://reader036.vdocuments.pub/reader036/viewer/2022062318/552fc130497959413d8d4c3a/html5/thumbnails/12.jpg)
J2EE Design Patterns:
• MVC
• Business Delegate
• Service Locator
• Value Object
• Session Façade
• Front Controller
• Composite View.
![Page 13: Design Patterns Fundamentos da Engenharia de Software](https://reader036.vdocuments.pub/reader036/viewer/2022062318/552fc130497959413d8d4c3a/html5/thumbnails/13.jpg)
O que esperar do uso de patterns. Por quê aprender?
• Aprender com a experiência dos outros
• Aprender a programar bem com orientação a objetos
• Desenvolver software de melhor qualidade
• Vocabulário comum
• Ajuda na documentação e na aprendizagem
![Page 14: Design Patterns Fundamentos da Engenharia de Software](https://reader036.vdocuments.pub/reader036/viewer/2022062318/552fc130497959413d8d4c3a/html5/thumbnails/14.jpg)
Bibliografia
• Design Patterns - Erich Gamma, Richard Helm,• Ralph Johnson e John Vlissides
• EJB Design Patterns - Marinescu
• Apostila de UML do curso de Java Sênior e J2EE (NCE - UFRJ)- Gilson Tavares
• http://www.javasoft.com/patterns
• http://www.theserverside.com
• Slides do treinamento dado pela empresa "NEKI" aos desenvolvedores da empresa "Acol Consultoria e Sistemas".
![Page 15: Design Patterns Fundamentos da Engenharia de Software](https://reader036.vdocuments.pub/reader036/viewer/2022062318/552fc130497959413d8d4c3a/html5/thumbnails/15.jpg)
Componentes do Grupo
• Alan Kloh
• Luciano Monteiro de Souza
• Rafael Sant Anna da Silva Pereira
• Rodolfo Cordeiro Burla de Aguiar