Upload
internet
View
112
Download
2
Embed Size (px)
Citation preview
Instituto Politécnico de BejaEscola Superior de Tecnologia e Gestão
Engenharia Informática – Engenharia de Software
Design Patterns
Cláudio Pedro N.º 3805
Francisco Rocha N.º 3747
Docente Responsável: Dra. Isabel Brito
Design Patterns 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 sistemaTornar o sistema mais fácil de entender e
manter
Design Patterns 6
Objectivos (Cont.)
Tornar a comunicação entre os designers de software mais eficientePermitir 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ósitoTipo de problema que o pattern trata
Outros nomesConjunto de outros nomes para o pattern
MotivaçãoUm cenário que ilustra o problema e como
o pattern o resolve
Design Patterns 9
Características - Descrição (Cont.)
AplicaçãoSituações em que este pattern pode ser
aplicadoEstrutura
Representação gráfica das classes do pattern
ParticipantesClasses 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ódigoFragmentos de código que ilustram como o
pattern deve ser implementadoUsos conhecidos
Exemplos de utilização do pattern em sistemas já implementados
Patterns relacionadosPatterns 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 objectoEstrutural
Diz respeito à composição de objectos e classesComportamental
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çãoAumentar 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 frameworkDiminuir 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 impostosExiste 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
FIM