Escolar Documentos
Profissional Documentos
Cultura Documentos
Crditos: Prof. Fabio Kon - IME/USP Adaptaes: Prof. Ncio de Lima Veras
1
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;
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;
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
E. Gamma and R. Helm and R. Johnson and J. Vlissides. Design Patterns - Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.
5 / 28
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.
8 / 28
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
9 / 28
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;
11 / 28
Classificao
Padres Estruturais
Lidam com a composio de classes (ou objetos) para formar grandes estruturas no sistema;
12 / 28
Classificao
Padres Comportamentais
Caracterizam a forma como classes (ou objetos) interagem Distribuem responsabilidade;
13 / 28
Classificao
Padres Comportamentais
Caracterizam a forma como classes (ou objetos) interagem; Distribuem responsabilidade;
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
O Formato de um padro
16 / 28
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
Aplicabilidade
Estrutura
Participantes
Colaboraes
17 / 28
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
18 / 28
De Criao:
Singleton; Abstract Factory;
Estrutural:
Decorator;
Comportamental:
Observer; Strategy;
19 / 28
Recapitulando
20 / 28
Para pesquisas...
21 / 28