Upload
thalita-back-brandt
View
216
Download
1
Embed Size (px)
Citation preview
Padrões de Projeto1 - Introdução a Padrões de Projeto
Eduardo de Lucena Falcão
Padr
ões d
e Pr
ojet
o - I
ntro
duçã
o
• Site da disciplina: http://edufalcao.me/design-patterns/• Grupo (facebook): Padrões de Projeto - DCX/UFPB• Contato: [email protected]
2
Padr
ões d
e Pr
ojet
o - I
ntro
duçã
o
Apresentação
• Expectativas?• OO e Design Patterns• Padrões de projeto são resultados da experiência
dos melhores projetistas de software OO.• Objetivo: reuso dos padrões/ideias (!código)
• Soluções ad hoc vs soluções baseadas em padrões
Flexibilidade, modularidade e reuso
3
Padr
ões d
e Pr
ojet
o - I
ntro
duçã
o
A Inspiração
• A ideia de padrões foi apresentada por Christopher Alexander em 1977 no contexto de Arquitetura (de prédios e cidades):
4
“Cada padrão descreve um problema que ocorre repetidamente de novo e de novo em nosso ambiente, e então descreve a parte central da solução para aquele problema de uma forma que você pode usar esta solução um milhão de vezes, sem nunca implementa-la duas vezes da mesma forma.”
- Christopher Alexander
Padr
ões d
e Pr
ojet
o - I
ntro
duçã
o
5
A ideia é reutilizar experiências bem sucedidas ao invés de redescobri-las!
Padr
ões d
e Pr
ojet
o - I
ntro
duçã
o
Gang of Four (GoF)
• E. Gamma and R. Helm and R. Johnson and J. Vlissides. Design Patterns - Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.
6
Padr
ões d
e Pr
ojet
o - I
ntro
duçã
o
Gang of Four (GoF)• Passamos a ter um vocabulário comum para conversar sobre
projetos de software. • Soluções que não tinham nome passam a ter nome.• Ao invés de discutirmos um sistema em termos de pilhas, filas,
árvores e listas ligadas, passamos a falar de coisas de muito mais alto nível como Fábricas (Factory), Fachadas (Façades), Observador (Observer), Estratégia (Strategy), Objetos Singulares (Singleton), etc.
• A maioria dos autores eram entusiastas de Smalltalk, principalmente o Ralph Johnson.
• Mas acabaram baseando o livro em C++ para que o impacto junto à comunidade de C fosse maior. E o impacto foi enorme, o livro vendeu centenas de milhares de cópias.
7
Padr
ões d
e Pr
ojet
o - I
ntro
duçã
o
Características
• Descrever e justificar soluções para problemas concretos e bem definidos (não são estratégias de implementação);
• Ser comprovados, isto é, devem ter sido previamente experimentados e testados;
• Tratar problema que ocorram em diferentes contextos;• Descrever relações entre conceitos, mecanismos e
estruturas existentes nos sistemas, seus pontos fortes e fracos;
• Ser utilizados em conjunto com outros padrões, compondo linguagens de padrões.
8
Padr
ões d
e Pr
ojet
o - I
ntro
duçã
o
Os 4 elementos de um padrão• Nome do padrão
• Uma referência que podemos usar para descrever um problema de projeto, suas soluções e consequências em uma ou duas palavras.
• Problema• Descreve em que situação aplicar poderíamos aplicar o padrão.
Algumas vezes isto inclui uma lista de condições que devem ser satisfeitas para que faça sentido aplicar o padrão.
• Solução• Descreve os elementos que compõem os padrões de projetos,
seus comportamentos, responsabilidades e colaborações.• Consequências
• Os resultados e análise das vantagens e desvantagens (trade-off) da aplicação do padrão.
9
Na ótica de programação/implementação os padrões de projeto podem ser explicados como descrições de
objetos e classes comunicantes que precisam ser personalizadas para resolver um problema geral de
projeto num contexto particular.
Padrões de projeto permitem que os desenvolvedores concentrem seus esforços nos aspectos inéditos do
problema.
Padr
ões d
e Pr
ojet
o - I
ntro
duçã
o
Vantagens no uso de Padrões de Projeto• Evita a redescoberta de soluções;• Propicia o uso de soluções corretas;• Melhora a qualidade do software;• Permitem que os desenvolvedores concentrem seus
esforços nos aspectos inéditos do problema;• Economiza esforço e tempo de desenvolvimento e
manutenção;• Melhora a confiabilidade do software;• Conduz ao bom uso de orientação a objetos;• Provê uma linguagem comum entre desenvolvedores:
• Compõem um vocabulário de alto nível para discussão de questões relativas ao projeto de sistemas de software.
10
Padr
ões d
e Pr
ojet
o - I
ntro
duçã
o
Exemplo 1: abordagem MVC
11
Observer Observer Observer
Padr
ões d
e Pr
ojet
o - I
ntro
duçã
o
Exemplo 1: Observer
12
Padr
ões d
e Pr
ojet
o - I
ntro
duçã
o
Descrevendo Padrões de Projeto• Nome e classificação do padrão
• O nome do padrão expressa a sua própria essência de forma sucinta. Um bom nome é vital, porque ele se tornará parte do seu vocabulário de projeto.
• Intenção e objetivo• É uma curta declaração que responde às seguintes questões: o que
faz o padrão de projeto? Quais os seus princípios e sua intenção? Que tópico ou problema particular de projeto ele trata?
• Também conhecido como• Outros nomes bem conhecidos para o padrão, se existirem.
• Motivação• Um cenário que ilustra um problema de projeto e como as
estruturas de classes e objetos no padrão solucionam o problema. 13
Padr
ões d
e Pr
ojet
o - I
ntro
duçã
o
Descrevendo Padrões de Projeto• Aplicabilidade
• Quais são as situações nas quais o padrão de projeto pode ser aplicado? Que exemplos de maus projetos ele pode tratar? Como você pode reconhecer essas situações?
• Estrutura• Uma representação gráfica das classes do padrão usando uma
notação baseada na Object Modeling Technique (OMT)• Participantes
• As classes e/ou objetos que participam do padrão de projeto e suas responsabilidades.
• Colaborações• Como as classes participantes colaboram para executar suas
responsabilidades. 14
Padr
ões d
e Pr
ojet
o - I
ntro
duçã
o
Descrevendo Padrões de Projeto• Consequências
• Como o padrão suporta a realização de seus objetivos? Quais são os seus custos e benefícios e os resultados da sua utilização? Que aspecto da estrutura de um sistema ele permite variar independentemente?
• Implementação• Que armadilhas, sugestões ou técnicas você precisa conhecer quando
da implementação do padrão? Existem considerações específicas de linguagem?
• Exemplo de código• Usos conhecidos
• Exemplos do padrão encontrados em sistemas reais.• Padrões relacionados
• Que padrões de projeto estão intimamente relacionados com este? Quais são as diferenças importantes? Com quais outros padrões este deveria ser usado?
15
Padr
ões d
e Pr
ojet
o - I
ntro
duçã
o
Tipos de Padrões de Projeto
• Categorias de Padrões do GoF• Padrões de criação• Padrões estruturais• Padrões comportamentais
16
Padr
ões d
e Pr
ojet
o - I
ntro
duçã
o
Classificação
• Padrões de Criação• Padrões responsáveis pelo processo de criação dos
objetos;• Abstraem o processo de instanciação;• Tornam um sistema independente da forma como
os objetos são criados, compostos e representados.
17
Padr
ões d
e Pr
ojet
o - I
ntro
duçã
o
Classificação
• Padrões Estruturais• Lidam com a composição de classes ou
objetos para formar grandes estruturas no sistema.
18
Padr
ões d
e Pr
ojet
o - I
ntro
duçã
o
Classificação
• Padrões Comportamentais• Caracterizam a forma como classes ou
objetos interagem e distribuem responsabilidade.
19
Padr
ões d
e Pr
ojet
o - I
ntro
duçã
o
Cardápio
20
1.Abstract Factory2.Builder3.Factory Method4.Prototype5.Singleton6.Adapter7.Bridge8.Composite9.Decorator10.Facade11.Flyweight12.Proxy
13.Chain of Responsibility14.Command15.Interpreter16.Iterator17.Mediator18.Memento19.Observer20.State21.Strategy22.Template Method23.Visitor Padrões de Criação
Padrões EstruturaisPadrões de Comportamento
Padr
ões d
e Pr
ojet
o - I
ntro
duçã
o
Exercício Proposto
1. Qual a importância dos padrões de projeto? Por que usar padrões de projetos? Quais são as vantagens?
2. Quais são os três tipos de padrões e quais as diferenças entre eles?
21
Padr
ões d
e Pr
ojet
o - I
ntro
duçã
o
Para pesquisar em casa
• Dê uma olhada no GoF ou no Use a Cabeça! Padrões de Projetos• a biblioteca deve possuir algumas cópias!
• Buscar por “GoF patterns” no google
• Minha recomendação para quem está iniciando nesse tema é o da serie Use a Cabeça – Padrões de Projetos.
22
Padr
ões d
e Pr
ojet
o - I
ntro
duçã
o
Referências
• E. Gamma and R. Helm and R. Johnson and J. Vlissides. Design Patterns - Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.
• Notas de Aula do Prof. Nécio Lima Veras
23