Padrões de Projeto
1 - Introdução a Padrões de Projeto
Eduardo de Lucena Falcão
Padrões de Projeto - Introdução
• Site da disciplina: http://edufalcao.me/design-patterns/
• Grupo (facebook): Padrões de Projeto - DCX/UFPB
• Contato: [email protected]
2
• 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
Padrões de Projeto - Introdução
Apresentação
3
A Inspiração
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 de Projeto - Introdução
• A ideia de padrões foi apresentada por Christopher
Alexander em 1977 no contexto de Arquitetura (de
prédiospadrão
e cidades):
“Cada
descreve um
4
Padrões de Projeto - Introdução
A ideia é reutilizar experiências bem
sucedidas ao invés de redescobri-las!
5
• E. Gamma and R. Helm and R.
Johnson and J. Vlissides. Design
Patterns - Elements of Reusable
Object-Oriented Software.
Addison-Wesley, 1995.
Padrões de Projeto - Introdução
Gang of Four (GoF)
6
• 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.
Padrões de Projeto - Introdução
Gang of Four (GoF)
7
Características
• 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.
Padrões de Projeto - Introdução
• Descrever e justificar soluções para problemas concretos
e bem definidos (não são estratégias de implementação);
8
• Nome do padrão
Na ótica
programação/implementação
osproblema
padrões
• Umade
referência
que podemos usar para descrever um
de projeto,
suas soluções
e consequências
em uma
ou duas
de projeto
podem
ser explicados
como
descrições
de
palavras.
objetos
e classes comunicantes que precisam ser
• Problema
personalizadas
para resolver um problema geral de
• Descreve em que situação aplicar poderíamos aplicar o padrão.
projeto
particular.
Algumas
vezes istonum
inclui contexto
uma lista de condições
que devem ser
satisfeitas para que faça sentido aplicar o padrão.
• Solução
Padrões de projeto permitem que os desenvolvedores
• Descreve os elementos que compõem os padrões de projetos,
concentrem
seus esforços
nos aspectos
inéditos do
seus comportamentos,
responsabilidades
e colaborações.
problema.
• Consequências
• Os resultados e análise das vantagens e desvantagens (trade-off)
da aplicação do padrão.
Padrões de Projeto - Introdução
Os 4 elementos de um padrão
9
•
•
•
•
•
•
•
•
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.
Padrões de Projeto - Introdução
Vantagens no uso de Padrões
de Projeto
10
Exemplo 1: abordagem MVC
Observer
Observer
Padrões de Projeto - Introdução
Observer
11
Padrões de Projeto - Introdução
Exemplo 1: Observer
12
Descrevendo Padrões de
Projeto
• Nome e classificação do padrão
• 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.
Padrões de Projeto - Introduçã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.
13
Descrevendo Padrões de
Projeto
• Aplicabilidade
• 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.
Padrões de Projeto - Introdução
• 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?
• Colaborações
• Como as classes participantes colaboram para executar suas
responsabilidades.
14
Descrevendo Padrões de
Projeto
• Consequências
• 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?
Padrões de Projeto - Introdução
• 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?
15
• Categorias de Padrões do GoF
• Padrões de criação
• Padrões estruturais
• Padrões comportamentais
Padrões de Projeto - Introdução
Tipos de Padrões de Projeto
16
Classificaçã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.
Padrões de Projeto - Introdução
• Padrões de Criação
17
Classificação
• Lidam com a composição de classes ou
objetos para formar grandes estruturas no
sistema.
Padrões de Projeto - Introdução
• Padrões Estruturais
18
Classificação
• Caracterizam a forma como classes ou
objetos interagem e distribuem
responsabilidade.
Padrões de Projeto - Introdução
• Padrões Comportamentais
19
1.Abstract Factory
2.Builder
3.Factory Method
4.Prototype
5.Singleton
6.Adapter
7.Bridge
8.Composite
9.Decorator
10.Facade
11.Flyweight
12.Proxy
13.Chain of Responsibility
14.Command
15.Interpreter
16.Iterator
17.Mediator
18.Memento
19.Observer
20.State
21.Strategy
22.Template Method
Padrões de Criação
23.Visitor
Padrões Estruturais
Padrões de Comportamento
Padrões de Projeto - Introdução
Cardápio
20
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?
Padrões de Projeto - Introdução
Exercício Proposto
21
• 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.
Padrões de Projeto - Introdução
Para pesquisar em casa
22
• 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
Padrões de Projeto - Introdução
Referências
23
Download

Padrões de Projetos