1 / 27

Design Patterns

Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software. Docente Responsável: Dra. Isabel Brito. Design Patterns. Cláudio Pedro N.º 3805 Francisco Rocha N.º 3747. Histórico.

draco
Download Presentation

Design Patterns

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Instituto Politécnico de BejaEscola Superior de Tecnologia e GestãoEngenharia Informática – Engenharia de Software Docente Responsável: Dra. Isabel Brito Design Patterns Cláudio Pedro N.º 3805 Francisco Rocha N.º 3747

  2. Histórico • A ideia de armazenar informação sobre patterns, observados num contexto, pode ser atribuída ao arquitecto Christopher Alexander e foi elaborada no contexto de arquitectura • “Um pattern descreve um problema que se repete várias vezes num determinado meio, e em seguida descreve o núcleo da sua solução, de modo que esta solução possa ser usada milhares e milhares de vezes.” (Alexander, 1978) Design Patterns

  3. Histórico (Cont.) • Em 1995, 4 autores – Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides – conhecidos como “The Gang of Four”, publicaram o primeiro catálogo de Design Patterns para programas orientados a objetos, com o título: Design Patterns: Elements of Reusable Object-Oriented Software Design Patterns

  4. Em que consistem? • Documentação de soluções genéricas e reutilizáveis, aplicáveis em problemas recorrentes • Descrição de soluções que funcionaram e se tornaram receitas para situações similares • Conjunto de classes e objectos relacionados que representam uma solução para um problema abstracto, e que serão particularizados em cada situação concreta Design Patterns

  5. Objectivos • Fornecer uma solução provada para problemas relacionados com o desenvolvimento de software • Isolar a variabilidade que pode existir nos requisitos do sistema • Tornar o sistema mais fácil de entender e manter Design Patterns

  6. Objectivos (Cont.) • Tornar a comunicação entre os designers de software mais eficiente • Permitir que os designers de software visualizem imediatamente o projecto de alto nível nas suas mentes, quando eles sabem o nome do pattern utilizado para determinado problema • Aumentar a produtividade na fase de design e a qualidade do software produzido Design Patterns

  7. Características • Descrição • Classificação Design Patterns

  8. Características - Descrição • Nome e Classificação • Identifica o pattern • Propósito • Tipo de problema que o pattern trata • Outros nomes • Conjunto de outros nomes para o pattern • Motivação • Um cenário que ilustra o problema e como o pattern o resolve Design Patterns

  9. Características - Descrição (Cont.) • Aplicação • Situações em que este pattern pode ser aplicado • Estrutura • Representação gráfica das classes do pattern • Participantes • Classes que participam no pattern e respectivas responsabilidades Design Patterns

  10. Características - Descrição (Cont.) • Colaborações • Como os participantes interagem para cumprir as suas responsabilidades • Consequências • Resultados e efeitos causados pelo uso do pattern • Implementação • Dicas e técnicas que o designer deve saber, e possíveis armadilhas para as quais deve estar preparado Design Patterns

  11. Características - Descrição (Cont.) • Exemplo de código • Fragmentos de código que ilustram como o pattern deve ser implementado • Usos conhecidos • Exemplos de utilização do pattern em sistemas já implementados • Patterns relacionados • Patterns fortemente relacionados com o pattern em questão e príncipais diferenças Design Patterns

  12. Características – Classificação • Quanto ao seu propósito: • Criacão • Descreve a melhor maneira de criar um objecto • Estrutural • Diz respeito à composição de objectos e classes • Comportamental • Caracteriza o modo como classes e objectos interagem e compartilham responsabilidades Design Patterns

  13. Características – Classificação (Cont.) • Quanto ao escopo: • Classes • Tratam do relacionamento entre classes e subclasses • Objectos • Tratam relacionamentos entre objectos que podem ser alterados em tempo de execução • Exemplo • Um pattern estrutural de classes utiliza herança para compor as classes, enquanto que um pattern estrutural de objectos descreve como estes devem ser agrupados Design Patterns

  14. Características – Classificação (Cont.) Fig. 1 – “Os 23 design patterns clássicos organizados segundo a sua classificação” Design Patterns

  15. Design Patterns & Reutilização • Em que consiste a reutilização? • “Utilização de produtos de software, construídos ao longo do processo de desenvolvimento, numa situação diferente daquela para a qual foram originalmente produzidos.” (Freeman, 1980) • Objectivo da reutilização • Aumentar a qualidade e produtividade no desenvolvimento de software Design Patterns

  16. Design Patterns & Reutilização (Cont.) • Reutilização foi provavelmente a grande motivação para o desenvolvimento de design patterns • É fulcral compreender os aspectos fundamentais que possibilitam a reutilização, para depois se poder propor um pattern específico de reutilização Design Patterns

  17. Design Patterns & Framework • Em que consiste um framework? • Técnica de reutilização orientada a objectos que compreende tanto design como código, com uma representação física em termos de classes, métodos e objectos • Objectivo de um framework • Diminuir a quantidade de código necessária para implementar aplicações similares Design Patterns

  18. Design Patterns & Framework (Cont.) • Design Patterns são soluções mais abstractas e genéricas do que as frameworks, que sendo mais específicas se relacionam sempre com apenas um domínio de aplicação • Design Patterns permitem a reutilização da arquitectura • Frameworks permitem a reutilização do código Design Patterns

  19. Design Patterns & Framework (Cont.) • Design Patterns possuem menores arquitecturas • Um framework pode conter em si vários patterns • Design Patterns descrevem como fazer um design, enquanto que um framework é o próprio design Design Patterns

  20. Exemplo • Desenvolvimento de um framework para cálculo de impostos • Existe a necessidade de criar uma única instância da classe Emissor, pois uma vez instanciada, poderá ser usada pelo resto da aplicação. • Deverá então ser utilizado o pattern Singleton na implementação do framework Design Patterns

  21. Exemplo (Cont.) • Nome e Classificação: • Singleton • Pattern de criação • Propósito: • Garantir que uma classe só tenha uma única instância e prever um ponto de acesso global a essa instância • Motivação • Garantir que apenas um objecto exista, independentemente do número de requisições que receber para criá-lo Design Patterns

  22. Exemplo (Cont.) • Estrutura: Design Patterns

  23. Exemplo (Cont.) • Consequências: • Acesso controlado à instância única • Espaço de nomes reduzido • Permite refinamento de operações e representação • Permite um número variável de instancias • Mais flexível do que operações de classes • Implementação: • Garantir a existência de uma única instância • Criando subclasses da classe Singleton Design Patterns

  24. Exemplo (Cont.) Fig. 2 – “Diagrama de classes da classe Emissor implementando o pattern Singleton” Design Patterns

  25. Relação com Engenharia de Software • Engenharia de Software estabelece e usa sólidos princípios de engenharia para que se possa obter economicamente um software que seja confiável e eficaz • Design Patterns são então uma ferramenta documental para a resolução de problemas durante a fase de design do software, compreendida na Engenharia de Software Design Patterns

  26. Referências Bibliográficas • Formato convencional • Gamma, Helm,Johnson, Vlissides – Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley Publishing Company, 1995 • Buschmann, Meunier, Rohnert, Sommerlad, Stal – Pattern-Oriented Software Architecture: A System of Patterns, J. Wiley and Sons Ltd., 1996 • Formato digital • http://www2.fundao.pro.br/articles.asp?cod=144 • http://www.inf.furb.br/seminco/2004/artigos/105-vf.pdf • http://www.ctp.di.fct.unl.pt/mei/dsoo/TEXTOS/Aula10.pdf • http://www.inf.ucp.br/profs/tavares/2002_01/aulaDP-1.ppt • http://www.inf.ucp.br/profs/tavares/2002_01/aulaFramework.ppt • http://www.lia.ufc.br/~eti/menu/modulos/Pattern/aulaDesignPatternsI4pp.pdf • http://www.psphome.hpg.ig.com.br/downloads/ENG_SOFTWARE_(Slides).ppt Design Patterns

  27. Design Patterns FIM

More Related