padrão de projeto

Download Padrão de Projeto

If you can't read please download the document

Upload: joaofama

Post on 13-Dec-2015

13 views

Category:

Documents


1 download

DESCRIPTION

Padrão de Projeto

TRANSCRIPT

Padro de projeto de softwareOrigem: Wikipdia, a enciclopdia livre.Orientao a objetosObjeto / InstnciaClasseAbstraoAtributoMtodosMensagemEncapsulamentoHerana / Herana mltiplaAssociaoPolimorfismoInterfaceOutras refernciasParadigma de programaoPadres de projetoUML / RUPEngenharia OOv eEm engenharia de software, um padro de projeto ou padro de desenho (do ingls design pattern) uma soluo geral reutilizvel para um problema que ocorre com frequncia dentro de um determinado contexto no projeto de software. Um padro de projeto no um projeto finalizado que pode ser diretamente transformado em cdigo fonte ou de mquina, ele uma descrio ou modelo (template) de como resolver um problema que pode ser usado em muitas situaes diferentes. Padres so melhores prticas formalizadas que o programador pode usar para resolver problemas comuns quando projetar uma aplicao ou sistema. Padres de projeto orientados a objeto normalmente mostram relacionamentos e interaes entre classes ou objetos, sem especificar as classes ou objetos da aplicao final que esto envolvidas. Padres que implicam orientao a objetos ou estado mutvel mais geral, no so to aplicveis em linguagens de programao funcional.Padres de projeto residem no domnio de mdulos e interconexes. Em um nvel mais alto h padres arquiteturais que so maiores em escopo, usualmente descrevendo um padro global seguido por um sistema inteiro.[1]Um padro de projeto define : seu nome, o problema, quando aplicar esta soluo e suas consequncias.Os padres de projeto : visam facilitar a reutilizao de solues de desenho - isto , solues na fase de projeto do software - e estabelecem um vocabulrio comum de desenho, facilitando comunicao, documentao e aprendizado dos sistemas de software.ndice 1 Histria 2 Padres GoF ('Gang of Four'); 2.1 Padres de criao 2.2 Padres estruturais 2.3 Padres comportamentais 3 Padres GRASP 3.1 Padres 4 Crticas 5 Bibliografia 6 Referncias 7 Ligaes externasHistriaChristopher Alexander[2] [3] [4] em seus livros (1977/1979) Notes on the Synthesis of Form, The Timeless Way of Building e A Pattern Language, estabelece que um padro deve ter, idealmente, as seguintes caractersticas: Encapsulamento: um padro encapsula um problema ou soluo bem definida. Ele deve ser independente, especfico e formulado de maneira a ficar claro onde ele se aplica. Generalidade: todo padro deve permitir a construo de outras realizaes a partir deste padro. Equilbrio: quando um padro utilizado em uma aplicao, o equilbrio d a razo, relaciada com cada uma das restries envolvidas, para cada passo do projeto. Uma anlise racional que envolva uma abstrao de dados empricos, uma observao da aplicao de padres emrtefatos tradicionais, uma srie convincente de exemplos e uma anlise de solues ruins ou fracassadas pode ser a forma de encontrar este equilbrio. Abstrao: os padres representam abstraes da experincia emprica ou do conhecimento cotidiano. Abertura: um padro deve permitir a sua extenso para nveis mais baixos de detalhe. Combinatoriedade: os padres so relacionados hierarquicamente. Padres de alto nvel podem ser compostos ou relacionados com padres que endeream problemas de nvel mais baixo.Alm da definio das caractersticas de um padro, Alexander definiu o formato que a descrio de um padro deve ter. Ele estabeleceu que um padro deve ser descrito em cinco partes: Nome: uma descrio da soluo, mais do que do problema ou do contexto. Exemplo: uma ou mais figuras, diagramas ou descries que ilustrem um prottipo de aplicao. Contexto: a descrio das situaes sob as quais o padro se aplica. Problema: uma descrio das foras e restries envolvidos e como elas interagem. Soluo: relacionamentos estticos e regras dinmicas descrevendo como construir artefatos de acordo com o padro, freqentemente citando variaes e formas de ajustar a soluo segundo as circunstncias. Inclui referncias a outras solues e o relacionamento com outros padres de nvel mais baixo ou mais alto.Em 1987, a partir dos conceitos criados por Alexander, os programadores Kent Beck e Ward Cunningham propuseram os primeiros padres de projeto para a rea da cincia da computao. Em um trabalho para a conferncia OOPSLA, eles apresentaram alguns padres para a construo de janelas na linguagem Smalltalk.[5] Nos anos seguintes Beck, Cunningham e outros seguiram com o desenvolvimento destas idias.O movimento ao redor de padres de projeto ganhou popularidade com o livro Design Patterns: Elements of Reusable Object-Oriented Software, publicado em 1995. Os autores desse livro, Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides, so conhecidos como a "Gangue dos Quatro" (Gang of Four) ou simplesmente "GoF".Posteriormente, vrios outros livros do estilo foram publicados, merecendo destaque Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, que introduziu um conjunto de padres conhecidos como GRASP (General Responsibility Assignment Software Patterns).Padres GoF ('Gang of Four');Os padres "GoF" so organizados em 3 famlias : Padres de criao : relacionados criao de objetos Padres estruturais : tratam das associaes entre classes e objetos. Padres comportamentais : tratam das interaes e divises de responsabilidades entre as classes ou objetos.Padres "GoF" organizados nas suas 3 famlias:Padres de criao Abstract Factory Builder Factory Method Prototype SingletonPadres estruturais Adapter Bridge Composite Decorator Faade (ou Facade) Flyweight ProxyPadres comportamentais Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Method VisitorUm padro "GoF" tambm classificado segundo o seu escopo em 2 outros grupos : Padres com escopo de classe : definido por relacionamentos de herana e em tempo de compilao. Padres com escopo de objeto : encontrados no relacionamento entre os objetos definidos em tempo de execuo.Padres GRASPOs padres GRASP, sigla para General Responsibility Assignment Software Patterns (or Principles), consistem de um conjunto de prticas para atribuio de responsabilidades a classes e objetos em projetos orientados a objeto.Os padres utilizados pelo GRASP so: Controlador (Controller), Criador (Creator), Indireo (Indirection), Especialista na informao (Information expert), Alta coeso (High Cohesion), Baixo acoplamento (Loose coupling), Polimorfismo (Polymorphism), Variaes protegidas (Protected variations), e Inveno pura (Pure fabrication).Todos esses padres servem para a resoluo de problemas comuns e bastante tpicos de desenvolvimento de software orientado a objeto. Portanto, tais tcnicas apenas documentam e normatizam as prticas j consolidadas, testadas e conhecidas no mercado.Os padres GRASP esto mais como uma ferramenta mental ou uma filosofia de design, mas que ainda assim so teis para o aprendizado e desenvolvimento de um bom design de software. Note que alguns padres GoF implementam solues correspondentes com padres GRASP.A principal obra sobre o assunto foi o livro "Utilizando UML e Padres" de autoria de Craig Larman.[6]Padres Especialista na Informao Criador (ver Factory Method) Controlador (ver Model-view-controller) Acoplamento fraco (ver Acoplamento)) Alta coeso (ver Coeso) Polimorfismo Indireo Variaes ProtegidasCrticasSegundo alguns usurios, alguns 'Padres de Projeto' so apenas evidncias de que alguns recursos esto ausentes em uma determinada linguagem de programao (Java ou C++ por exemplo). Nesta linha, Peter Norvig demonstra que 16 dos 23 padres do livro 'Design Patterns' so simplificados ou eliminados nas linguagens Lisp ou Dylan, usando os recursos diretos destas linguagens.[7]Segundo outros, excessos nas tentativas de fazer o cdigo se conformar aos 'Padres de Projeto' aumentam desnecessariamente a sua complexidade.[8]Bibliografia Christopher Alexander. Notes on the Synthesis of Form. Estados Unidos: Harvard University Press, 1964. ISBN 0-674-62751-2 Christopher Alexander. The Timeless Way of Building. Estados Unidos: Oxford University Press, 1979. ISBN 0-19-502402-8 Christopher Alexander. A Pattern Language. Estados Unidos: Oxford University Press, 1977. ISBN 0-19-501919-9 Craig Larman. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development. 1 ed. Estados Unidos: Prentice Hall, 2004. 736 p. ISBN 0-13-148906-2 Gregor Hohpe, Bobby Woolf. Enterprise Integration Patterns: Designing, Building, And Deploying Messaging Solutions. 1 ed. Estados Unidos: Addinson-Wesley, 2004. 659 p. ISBN 0-321-20068-3 Pablo Dall'Oglio. PHP Programando com Orientao a Objetos: Inclui Design Patterns. 1 ed. So Paulo: Novatec, 2007. 576 p. ISBN 978-85-7522-137-2 Alexandre Altair de Melo e Mauricio G. F. Nascimento. PHP Profissional: Aprenda a desenvolver sistemas profissionais orientados a objetos com padres de projeto. 1 ed. So Paulo: Novatec, 2007. 464 p. ISBN 978-85-7522-141-9RefernciasMartin, Robert C.. Princpios de Projeto e Padres de Projeto. Visitado em 2000.OS CONCEITOS de padro de projeto foi criado na dcada de 70 pelo arquitecto Christopher Alexander.Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. 1 ed. Estados Unidos: Addison-Wesley, 1995. ISBN 0-201-63361-2Doug Lea. Christopher Alexander:An Introduction for Object-Oriented Designers (em Ingls). Visitado em 18 de abril de 2007.Kent Beck, Ward Cunningham. Using Pattern Languages for Object-Oriented Programs (em Ingls). Visitado em 18 de abril de 2007.Utilizando UML e Padres 2 Edio - Craig LarmanNorvig, Peter (1998). "Design Patterns in Dynamic Languages". Ttulo do livro no fornecido. McConnell, Steve. Code Complete: A Practical Handbook of Software Construction, 2nd Edition. [S.l.: s.n.], 2004. p. 105.Ligaes externasCommonsO Commons possui imagens e outras mdias sobre Padro de projeto de software Lista de alguns padroes comuns (em ingls) Pgina com descries e exemplos dos padres GoF (em ingls) Jogo de Memorizao Padres de Projeto - GOF (em portugus)