padrões de projeto 1 - introdução a padrões de projeto eduardo de lucena falcão

23
Padrões de Projeto 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão

Upload: thalita-back-brandt

Post on 07-Apr-2016

218 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Padrões de Projeto 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão

Padrões de Projeto1 - Introdução a Padrões de Projeto

Eduardo de Lucena Falcão

Page 2: Padrões de Projeto 1 - 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

Page 3: Padrões de Projeto 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão

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

Page 4: Padrões de Projeto 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão

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

Page 5: Padrões de Projeto 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão

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!

Page 6: Padrões de Projeto 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão

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

Page 7: Padrões de Projeto 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão

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

Page 8: Padrões de Projeto 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão

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

Page 9: Padrões de Projeto 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão

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.

Page 10: Padrões de Projeto 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão

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

Page 11: Padrões de Projeto 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão

Padr

ões d

e Pr

ojet

o - I

ntro

duçã

o

Exemplo 1: abordagem MVC

11

Observer Observer Observer

Page 12: Padrões de Projeto 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão

Padr

ões d

e Pr

ojet

o - I

ntro

duçã

o

Exemplo 1: Observer

12

Page 13: Padrões de Projeto 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão

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

Page 14: Padrões de Projeto 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão

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

Page 15: Padrões de Projeto 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão

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

Page 16: Padrões de Projeto 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão

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

Page 17: Padrões de Projeto 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão

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

Page 18: Padrões de Projeto 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão

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

Page 19: Padrões de Projeto 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão

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

Page 20: Padrões de Projeto 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão

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

Page 21: Padrões de Projeto 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão

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

Page 22: Padrões de Projeto 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão

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

Page 23: Padrões de Projeto 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão

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