Você está na página 1de 21

Introduo aos Padres de Projetos

Crditos: Prof. Fabio Kon - IME/USP Adaptaes: Prof. Ncio de Lima Veras
1

Padres de Projeto de Software OO




Tambm conhecidos como


Padres de Desenho de Software OO ou simplesmente como Padres.

Porque padres?
Padres contm o somatrio da experincia dos melhores projetistas OO; Reuso de idias, no de cdigo; Consistem de micro-arquiteturas de classes, objetos, seus papeis e suas colaboraes;

Padres de Projeto de Software OO

2 / 28

A Inspirao


A idia de padres foi apresentada por Christopher Alexander em 1977 no contexto de Arquitetura (de prdios e cidades):

Cada padro descreve um problema que ocorre repetidamente de novo e de novo em nosso ambiente, e ento descreve a parte central da soluo para aquele problema de uma forma que voc pode usar esta soluo um milho de vezes, sem nunca implementa-la duas vezes da mesma forma.


Livros
Padres de Projetos: Solues reutilizveis de software OO;

Use a cabea! Padres de Projetos.

Padres de Projeto de Software OO

3 / 28

Catlogo de solues

 

Um padro encerra o conhecimento de uma pessoa muito experiente em um determinado assunto de uma forma que este conhecimento pode ser transmitido para outras pessoas menos experientes. Outras cincias (p.ex. qumica) e engenharias possuem catlogos de solues. Desde 1995, o desenvolvimento de software passou a ter o seu primeiro catlogo de solues para projeto de software: o livro GoF.
Padres de Projeto de Software OO 4 / 28

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.

Padres de Projeto de Software OO

5 / 28

Gang of Four (GoF)


  

 

Passamos a ter um vocabulrio comum para conversar sobre projetos de software. Solues que no tinham nome passam a ter nome. Ao invs de discutirmos um sistema em termos de pilhas, filas, rvores e listas ligadas, passamos a falar de coisas de muito mais alto nvel como Fbricas, Fachadas, Observador, Estratgia, Objetos Singulares, 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 cpias.
Padres de Projeto de Software OO 6 / 28

Caractersticas


Descrever e justificar solues para problemas concretos e bem definidos (no so estratgias de implementao); Ser comprovados, isto , devem ter sido previamente experimentados e testados; Tratar problema que ocorram em diferentes contextos; Descrever relaes entre conceitos, mecanismos e estruturas existentes nos sistemas, seus pontos fortes e fracos; Capturar a evoluo e aprimoramento das solues; Ser utilizados em conjunto com outros padres, compondo linguagens de padres.
Padres de Projeto de Software OO 7 / 28

 

 

Resultados
 

Permitem compartilhar experincias bem sucedidas na resoluo de problemas recorrentes; Compem um vocabulrio de alto nvel para discusso de questes relativas ao projeto de sistemas de software; Permitem que os desenvolvedores concentrem seus esforos nos aspectos inditos do problema.

Padres de Projeto de Software OO

8 / 28

Vantagens no uso de Padres de Projeto


   

   

Evita a redescoberta de solues; Propicia o uso de solues corretas; Melhora a qualidade do software; Permitem que os desenvolvedores concentrem seus esforos nos aspectos inditos do problema; Economiza esforo e tempo de desenvolvimento e manuteno;

Melhora a confiabilidade do software; Conduz ao bom uso de orientao a objetos; Prov uma linguagem comum entre desenvolvedores:
Compem um vocabulrio de alto nvel para discusso de questes relativas ao projeto de sistemas de software; Reduz o volume de documentao

Padres de Projeto de Software OO

9 / 28

Tipos de Padres de Projeto

Categorias de Padres do GoF


Padres de Criao; Padres Estruturais; Padres Comportamentais;

Padres de Projeto de Software OO

10 / 28

Classificao


Padres de Criao
Abstraem o processo de instanciao;  Tornam um sistema independente da forma como os objetos so criados, compostos e representados;


Padres de Projeto de Software OO

11 / 28

Classificao


Padres Estruturais


Lidam com a composio de classes (ou objetos) para formar grandes estruturas no sistema;

Padres de Projeto de Software OO

12 / 28

Classificao


Padres Comportamentais
Caracterizam a forma como classes (ou objetos) interagem  Distribuem responsabilidade;


Padres de Projeto de Software OO

13 / 28

Classificao


Padres Comportamentais
Caracterizam a forma como classes (ou objetos) interagem;  Distribuem responsabilidade;


Padres de Projeto de Software OO

14 / 28

Cardpio
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
1.

Chain of Responsibility 14. Command 15. Interpreter 16. Iterator 17. Mediator 18. Memento 19. Observer 20. State 21. Strategy 22. Template Method 23. Visitor
13.
Padres de Projeto de Software OO

Padres de Criao Padres Estruturais Padres de Comportamento


15 / 28

O Formato de um padro

Todo padro inclui


Nome Problema Soluo Conseqncias / Foras

Padres de Projeto de Software OO

16 / 28

O Formato dos padres no GoF


Nome


Um bom nome essencial para que o padro caia na boca do povo; Um cenrio mostrando o problema e a necessidade da soluo; Como reconhecer as situaes nas quais o padro aplicvel; Uma representao grfica da estrutura de classes do padro; As classes e objetos que participam e quais so suas responsabilidades; Como os participantes colaboram para exercer as suas responsabilidades

Objetivo / Inteno (Tambm Conhecido Como Motivao)




Aplicabilidade


Estrutura


Participantes


Colaboraes


Padres de Projeto de Software OO

17 / 28

O Formato dos padres no GoF


Conseqncias


Vantagens e desvantagens, trade-offs (ao econmica que visa resoluo de um problema, mas acarreta outro); Com quais detalhes devemos nos preocupar quando implementamos o padro; Aspectos especficos de cada linguagem; No caso do GoF, em C++ (a maioria) ou Smalltalk; No Head First, Java; Exemplos de sistemas reais de domnios diferentes onde o padro utilizado; Quais outros padres devem ser usados em conjunto com esse; Quais padres so similares a este, quais so as diferenas;

Implementao
    

Exemplo de Cdigo

Usos Conhecidos

Padres Relacionados
 

Padres de Projeto de Software OO

18 / 28

Estudando uns padres especficos




De Criao:
Singleton; Abstract Factory;

 

Estrutural:
Decorator;

Comportamental:
Observer; Strategy;

Padres de Projeto de Software OO

19 / 28

Recapitulando


Voltando ao Christopher Alexander:


Cada padro descreve um problema que ocorre repetidamente de novo e de novo em nosso ambiente, e ento descreve a parte central da soluo para aquele problema de uma forma que voc pode usar esta soluo um milho de vezes, sem nunca implementa-la duas vezes da mesma forma.

Padres de Projeto de Software OO

20 / 28

Para pesquisas...

D uma olhada no GoF ou no Use a Cabea! Padres de Projetos


a biblioteca possui algumas cpias!

Buscar por GoF patterns no google

Padres de Projeto de Software OO

21 / 28

Você também pode gostar