Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja,...

23
Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja, 14 de Dezembro de 2005 cola Superior de Tecnologia e Gestão Instituto Politécnico de Beja

Transcript of Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja,...

Page 1: Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja, 14 de Dezembro de 2005 Escola Superior de Tecnologia e.

Design Patterns

Apresentação elaborada por:

Carla Guerreiro nº3157 Patrícia Mateus nº3343

Beja, 14 de Dezembro de 2005

Escola Superior de Tecnologia e Gestão Instituto Politécnico de Beja

Page 2: Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja, 14 de Dezembro de 2005 Escola Superior de Tecnologia e.

Conteúdos• Introdução;• História;• O que são Design Patterns;• Como são constituídos;• Como descrever e escolher um Design Pattern;• Classificação;• Exemplo (Iterator);• Vantagens e Desvantagens;• Design Patterns VS Frameworks ;

Page 3: Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja, 14 de Dezembro de 2005 Escola Superior de Tecnologia e.

Introdução

• Design Patterns representam, geralmente, uma solução a um problema comum no desenho de software.

• Desenvolver software orientado a objectos é complicado mas desenvolver software reutilizável orientado a objectos ainda é mais complicado.

• Design Patterns podem acelerar o desenvolvimento ao providenciar paradigmas de desenvolvimento já testados e provados.

Page 4: Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja, 14 de Dezembro de 2005 Escola Superior de Tecnologia e.

História• O conceito patterns foi originário na indústria da construção. Arquitectos

aperceberam-se que precisavam de partilhar ideias sobre técnicas de design.

• “Cada pattern descreve um problema que ocorre por diversas vezes no nosso ambiente, e então descreve o núcleo da solução àquele problema de tal forma que a solução pode ser utilizada milhares de vezes” – Christopher Alexander (Arquitecto).

• Os design patterns deram o salto da arquitectura para os sistemas de computadores nos anos 80.

• A filosofia object-oriented (OO) estava a ganhar popularidade e os design patterns eram uma forma de educar os seguidores OO da melhor forma.

Page 5: Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja, 14 de Dezembro de 2005 Escola Superior de Tecnologia e.

O que são design patterns• Consistem numa documentação de soluções genéricas e reutilizáveis,

aplicáveis em problemas recorrentes.

• descreve o problema, a sua solução, quando esta deve ser aplicada e quais as suas consequências. Enumera também algumas dicas e exemplos de implementação.

• são descrições de objectos e classes interrelacionados que são adaptados para resolver um problema de design num contexto particular.

Page 6: Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja, 14 de Dezembro de 2005 Escola Superior de Tecnologia e.

Como são constituídos Nome:

descreve sucintamente o problema; Problema:

descreve quando se deve aplicar; Solução:

descreve os elementos que constituem o design (as suas relações, responsabilidades e colaborações);

Consequências: - resultados e transacções da aplicação do pattern; - engloba o impacto na flexibilidade, extensibilidade ou portabilidade do sistema;

Page 7: Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja, 14 de Dezembro de 2005 Escola Superior de Tecnologia e.

Como descrever um Design Pattern 1.1. Nome do padrão e sua classificação:Nome do padrão e sua classificação:

o nome deve ser identificativo e a sua classificação é feita segundo critérios explicados mais à frente.

2.2. Objectivo:Objectivo: descrição do que o pattern faz, qual o objectivo a atingir e para que problemas está direccionado.

3.3. Motivação:Motivação: um cenário que ilustra o problema e de que forma as classes e estruturas de objectos envolvidas o resolvem.

4.4. Aplicabilidade:Aplicabilidade: quais as situações em que o pattern pode ser aplicado e como podemos reconhecer essas situações.

5.5. Estrutura:Estrutura:- representação gráfica das classes usando OMT. - usados diagramas de interacção

Page 8: Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja, 14 de Dezembro de 2005 Escola Superior de Tecnologia e.

Como descrever um Design Pattern6.6. Participantes:Participantes: responsabilidades das classes e objectos participantes.7.7. Colaborações:Colaborações: como os participantes colaboram para levar a cabo as

responsabilidades.8.8. Consequências:Consequências: quais os prós e os contras e os resultados inerentes ao

uso do pattern. Que aspectos do sistema podem variar independentemente.

9.9. Implementação:Implementação: quais as dicas e técnicas a considerar nesta fase.10.10. Amostras de código:Amostras de código: fragmentos de código que ilustram uma possível

forma de implementação.11.11. Exemplos de utilização:Exemplos de utilização: exemplos de patterns encontrados em sistemas12.12. Padrões relacionados:Padrões relacionados: patterns relacionados, quais as principais

diferenças e com que patterns podem ser utilizados.

Page 9: Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja, 14 de Dezembro de 2005 Escola Superior de Tecnologia e.

Como escolher um Design Pattern• Considerar como o design pattern resolve determinado problema.• Procurar pelo pattern cujo objectivo seja relevante para a solução do

problema.• Estude o inter-relacionamento entre patterns graficamente.• Estudo de patterns com objectivos semelhantes.• Examine a causa do redesenho: verifique se o problema envolve

alguma dessas causas e verifique quais os padrões que as evitam.• Considere o que deve ser variável no seu design. Neste caso é

considerado o que forçará uma mudança no design, ou seja, considere o que poderá precisar de mudar sem ter que redesenhar o sistema.

Page 10: Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja, 14 de Dezembro de 2005 Escola Superior de Tecnologia e.

ClassificaçãoOs design patterns podem ser classificados segundo dois critérios:

Propósito Criação Estrutural Comportamental

Âmbito Class Pattern Object Pattern

Page 11: Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja, 14 de Dezembro de 2005 Escola Superior de Tecnologia e.

Classificação: propósito• Patterns de criação:

criam objectos por si, sem que tenha que instanciá-los directamente; programa com mais flexibilidade em decidir quais os objectos que

devem ser criados para determinado caso. podem ser competidores ou complementares.

• Patterns estruturais: ajudam a compor grupos de objectos em amplas estruturas, tais como

interfaces de utilizador complexas.

• Patterns comportamentais: auxiliam na definição da comunicação entre objectos no sistema e

como o seu fluxo é controlado num programa complexo.

Page 12: Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja, 14 de Dezembro de 2005 Escola Superior de Tecnologia e.

Classificação: âmbito• Classe:

patterns aplicados a classes lidam com relações entre classes e as suas subclasses;

as relações são estabelecidas através da herança de classes; são estáticas.

• Objecto: patterns aplicados a objectos lidam com as relações dos objectos; podem ser modificados durante a execução; são mais dinâmicos.

Page 13: Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja, 14 de Dezembro de 2005 Escola Superior de Tecnologia e.

Classificação

Propósito

Criação Estrutural Comportamental

Âmbito

Classe Factory Adapter InterpreterTemplate

Objecto Abstract FactoryBuilder

PrototypeSingleton

AdapterBridge

Composite Decorator

FacadeProxy

Chain of ResponsibilityCommand

IteratorMediatorMementoFlyweightObserver

StateStrategyVisitor

Figura1 – As 23 categorias organizadas segundo a sua classificação

Page 14: Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja, 14 de Dezembro de 2005 Escola Superior de Tecnologia e.

Exemplo (Iterator)• Nome do Pattern e Classificação:

Iterator – Comportamental (Object Pattern)• Propósito:

Providência um modo de acesso a elementos de um agregado de objectos.

• Motivação: Um objecto que possua agregações deve permitir que os seus elementos sejam acedidos sem que a sua estrutura interna seja

exposta.

Page 15: Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja, 14 de Dezembro de 2005 Escola Superior de Tecnologia e.

Exemplo (Iterator)

• Aplicação:

aceder ao conteúdo de objecto agregados sem expor a sua representação interna;

suportar mais de uma maneira de percorrer a lista; Providenciar uma interface única para percorrer diferentes

estruturas agregadas;

Page 16: Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja, 14 de Dezembro de 2005 Escola Superior de Tecnologia e.

Exemplo (Iterator)• Estrutura:

Iterator

First()Next()IsDone()CurrentItem()

Aggregate

CreateIterator()

<<Interface>>

ConcreteAggregate

CreateIterator()

ConcreteIterator

return new ConcreteIterator (this)

Retirado de www.inf.ucp.br/profs/tavares/2002_01/aulaDP-1.ppt

Cliente

Representação gráfica das classes

Page 17: Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja, 14 de Dezembro de 2005 Escola Superior de Tecnologia e.

Exemplo (Iterator)• Participantes:

• Iterator• Define um interface para aceder e percorrer os elementos;

• ConcreteIterator• Implementa a interface do Iterator;• Mantém a informação sobre o elemento percorrido;

• Aggregate• Define um interface para a criação do objeto Iterator;

• ConcreteAggregate• Implementa o método da interface que retorna uma instância do

ConcreteIterator.• Colaborações: ConcreteIterator mantém a referência do objecto que está a ser

percorrido, podendo calcular qual o elemento seguinte.

Page 18: Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja, 14 de Dezembro de 2005 Escola Superior de Tecnologia e.

Exemplo (Iterator)• Consequências:

• Suporta alterações na forma como é percorrida a lista;• Simplifica a interface Aggregate; • Podem ser feitos vários percursos, já que o seu estado é

armazenado em cada Iterator.• Patterns Relacionados:

• Composite: Estruturas recursivas;• Factory Method;• Memento.

• Exemplos de Utilização: sistema de repositório de clientes.

Page 19: Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja, 14 de Dezembro de 2005 Escola Superior de Tecnologia e.

Design PatternsVANTAGENS:• Reutilização de soluções;• Estabelecimento de terminologia

comum;• perspectiva de alto nível do

problema (abstracção) e do processo de design;

• Ilustra os princípios básicos da orientação a objectos;

• Facilitar modificações;

DESVANTAGENS:• Os programadores são tentados a

recorrer ao uso dos patterns mesmo quando não é apropriado a sua utilização;

• Pode limitar a criatividade;• Pode aumentar a complexidade

de design dificultando a manutenção do código;

Page 20: Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja, 14 de Dezembro de 2005 Escola Superior de Tecnologia e.

Frameworks

• 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:• Diminuir a quantidade de código necessária para implementar

aplicações similares

Page 21: Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja, 14 de Dezembro de 2005 Escola Superior de Tecnologia e.

Design Patterns VS Frameworks• os design patterns são mais abstractos e gerais;• Design Patterns não podem ser directamente

implementados num determinado ambiente de software;• um framework pode conter vários design patterns; • Design Patterns permitem a reutilização da arquitectura;• Frameworks permitem a reutilização do código.

Juntos, permitem a melhoria da qualidade do software e reduzem o tempo de desenvolvimento.

Page 22: Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja, 14 de Dezembro de 2005 Escola Superior de Tecnologia e.

Conclusão• Design Patterns não são uma solução para todos os problemas de

desenvolvimento de software, mas pode se tornar numa ferramenta valiosa.

• Não existem soluções nem respostas perfeitas, por isso é necessário bom senso na utilização de design patterns.

• Os design patterns descrevem a forma como os objectos comunicam sem que se emaranhem nos diferentes modelos e métodos. Conservar esta separação tem sido um dos principais objectivos de uma correcta programação orientada a objectos.

Page 23: Design Patterns Apresentação elaborada por: Carla Guerreiro nº3157 Patrícia Mateus nº3343 Beja, 14 de Dezembro de 2005 Escola Superior de Tecnologia e.

Referências Bibliográficas Livros:

o E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns:

Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.

o A. Shalloway, J.R. Trott, Design Patterns Explained

Formato electrónico:http://dsc.upe.br/~scbs/unicap/poo/Iterator.htmlhttp://jacques.dsc.ufcg.edu.br/cursos/map/html/map2.htmhttp://www.developer.com/design/article.php/3309461http://coronet.iicm.edu/sa/scripts/lesson12.htm#_Toc6032417