padrões de projeto v3: catálogo gof - gof-utfpr.pdf · o projeto orientado a objetos enfatiza na

Download Padrões de Projeto v3: Catálogo GoF - GOF-UTFPR.pdf · O Projeto Orientado a Objetos enfatiza na

Post on 30-Nov-2018

212 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • Ministrio da Educao Universidade Tecnolgica Federal do Paran

    Campus Medianeira

    Padres de Projeto v3: Catlogo GoF

    Romualdo Rubens de Freitas romualdo@utfpr.edu.br

  • Padres de Projeto

    Romualdo Rubens de Freitas ii

    Licena

    O uso deste material est condicionado licena Creative Commons Attribution-NonCommercial-Share Alike 3.0 Brazil, que pode ser obtida mediante o acesso ao endereo http://creativecommons.org/licenses/by-nc-sa/3.0/br/.

    Resumidamente, com este material possvel realizar:

    Cpia, distribuio, exibio e execuo;

    Criao de obras derivadas.

    Tendo em mente as seguintes condies:

    Deve-se dar crdito ao autor original;

    proibido o uso deste material com fins financeiros;

    Se este material for alterado, transformado ou outra obra for criada a partir dele, a obra resultante somente poder ser distribuda mediante licena idntica a esta.

  • Padres de Projeto

    Romualdo Rubens de Freitas iii

    Apresentao

    Muito se discute quanto utilizao dos padres de projeto. Alguns

    argumentam que a proliferao de classes acaba por inchar o cdigo da

    aplicao. Outros, no entanto, atestam que os padres de projeto fazem parte

    das assim chamadas boas prticas e que seu uso proporciona maior clareza

    no cdigo, traz facilidades de manuteno, promove a separao de

    atribuies e garante extensibilidade medida que novas funcionalidades so

    agregadas ao sistema.

    Independente de opinies fica claro que a utilizao de boas prticas em

    projetos de software garante inmeras vantagens, tais como melhor

    entendimento do problema que se deseja resolver com a aplicao; diviso de

    responsabilidades, sendo que cada parte ou camada executa um conjunto de

    funcionalidades inter-relacionadas; facilidade na incluso de novos processos

    e, no menos importante, manutenibilidade. Estas vantagens so apresentadas

    tendo em vista a codificao. Normalmente, o desenvolvimento de uma

    aplicao de software deve levar em considerao, alm do desenvolvimento,

    igualmente as etapas de Anlise e Projeto, nas quais o uso de boas prticas

    leva a um projeto de software, como um todo, que ser bem entendido por

    todos da equipe de desenvolvimento, bem como por aqueles que venham a

    integr-la posteriormente, alm, claro, daqueles dos prprios usurios.

    Os padres de projeto permitem a reusabilidade de projetos e

    arquiteturas e evitam seu comprometimento, alm de auxiliar na documentao

    e na manuteno de sistemas existentes. De um modo geral, um padro tem 4

    (quatro) elementos principais: nome, uma ou duas palavras usadas para descrever o problema no qual o padro aplicvel, suas solues e

    conseqncias; problema, que explica o problema e seu contexto e quando aplicar o padro; soluo, descreve os elementos que constituem o projeto, seus relacionamentos, responsabilidades e colaboraes; e conseqncias, descrevem os resultados e benefcios da aplicabilidade do padro. Desta

  • Padres de Projeto

    Romualdo Rubens de Freitas iv

    forma, um padro de projeto nomeia, abstrai e identifica aspectos chave de

    uma estrutura de projeto comum que o torna til na criao de um projeto

    orientado a objetos reusvel.

    Padres de projeto possibilitam aplicar solues a problemas freqentes,

    tambm denominados de recorrentes. Mas, na maioria dos casos, muitos

    consideram o entendimento destas solues um passo a mais na

    complexidade do desenvolvimento de aplicaes de software e terminam

    negligenciando seu uso. Na verdade, esta negligncia acaba por gerar um

    contraponto no uso de padres de projeto, pois, na maioria dos casos, uma

    soluo semelhante apresentada pelos padres de projeto utilizada. Este

    contraponto se d pelo fato de o problema ser resolvido com uma codificao

    muito semelhante quela que seria feita se os padres de projeto fossem

    aplicados. Esta prtica conhecida como anti-pattern (anti-padro), que ,

    basicamente, o uso de prticas no recomendas. Isto se d pelas seguintes

    caractersticas (a) uma dada soluo de cdigo que utilizada com freqncia

    e que, a princpio, representa ser uma boa soluo, mas que, ao longo do

    tempo, torna-se um complicador na evoluo da aplicao de software ou em

    sua manuteno; e (b) tal soluo no adequada pode ser substituda por um

    padro de projeto.

    Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides organizam

    os 23 padres de projeto apresentados no livro Design Patterns: Elements of Reusable Object-Oriented Software de acordo com seus propsitos e escopo. Esta classificao apresentada na Tabela 1.

  • Padres de Projeto

    Romualdo Rubens de Freitas v

    Propsito Criao Estrutural Comportamental

    Escopo

    Classe Factory Method Adapter (classe) Interpreter Template Method

    Objeto

    Abstract Factory Builder Prototype Singleton

    Adapter (objeto) Bridge Composite Decorator Faade Flyweight Proxy

    Chain of Responsibility Command Iterator Mediator Memento Observer State Strategy Visitor

    Tabela 1: Classificao dos Padres de Projeto.

    Esta classificao tornou-se conhecida como Catlogo GoF, sendo que

    GoF significa Gang of Four ou Grupo dos Quatro, em ingls, como aluso aos

    quatro autores do clebre livro sobre padres de projetos publicado em 1995.

    Quando se fala em projeto de software uma notao grfica para

    expressar as intenes do projetista importante. Entretanto, uma notao

    grfica til para demonstrar o produto, que o resultado final do processo de

    projeto na forma de relacionamentos entre classes e objetos. Para se obter um

    projeto reutilizvel preciso registrar decises, alternativas e benefcios, bem

    como criar exemplos concretos, que permitam verificar o projeto em ao.

    No livro de Erich Gamma et al, alm da notao grfica e exemplos1, os

    padres de projeto so descritos de acordo com uma estrutura textual

    considerada consistente. O objetivo desta estrutura tornar os padres de

    projeto mais fceis de aprender, comparar e usar e apresentada no Quadro

    1.

    1 Os exemplos apresentados no livro esto escritos na linguagem Smalltak e C++.

  • Padres de Projeto

    Romualdo Rubens de Freitas vi

    Nome e Classificao O nome descreve a essncia do padro e a classificao reflete as divises apresentadas na Tabela 1.

    Inteno Uma breve declarao sobre o objetivo do padro, sua lgica e inteno e a que questo de projeto ou problema ele resolve.

    Conhecido como Outros nomes, caso existam, pelos quais o padro conhecido.

    Motivao Apresenta uma cenrio que ilustra um problema de projeto e como as estruturas de classes e objetos no padro resolvem o problema.

    Aplicabilidade Situaes nas quais o padro aplicvel, exemplos de projetos ruins que o padro pode resolver e como reconhecer tais situaes.

    Estrutura Apresenta a representao grfica das classes usando uma notao baseada na OMT (Object Modeling Technique), entre outras.

    Participantes Classes e/ou objetos que participam no padro e suas responsabilidades.

    Colaboraes Como os participantes colaboram para conduzir suas responsabilidades.

    Conseqncias Como o padro suporta seus objetivos, quais os benefcios e resultados do uso do padro e que aspecto do sistema o padro permite que possa variar independentemente.

    Implementao Que cuidados, dicas e tcnicas devem ser utilizadas quando o padro for implementado e se h questes especficas a uma determinada linguagem.

    Exemplo Fragmentos de cdigo de como o padro pode ser implementado.

    Usos Conhecidos Exemplos do padro em sistemas reais. Padres Relacionados Que padres de projeto se relacionam, importantes

    diferenas e com quais padres pode ser usado. Quadro 1: Estrutura para descrio dos padroes de projeto utilizada no Catlogo GoF.

    Alm da descrio textual e outras j citadas apresentada por Erich

    Gamma et al, vrias referncias apresentam os padres do Catlogo GoF de

    acordo com seus propsitos, descrevendo os padres de criao, estruturais e,

    por fim, os comportamentais. Este material, por outro lado, utiliza outra ordem

    de apresentao. Tal ordem baseia-se no grau de complexidade de cada

    padro, permitindo que o leitor possa ganhar entendimento sobre os padres

    de projeto do Catlogo GoF aos poucos. Mesmo assim, ao lado de cada

  • Padres de Projeto

    Romualdo Rubens de Freitas vii

    padro informado qual o seu propsito se de criao, estrutural ou

    comportamental.

    Assim, este material proporciona ao leitor informaes sobre Padres de

    Projeto provenientes de vrias fontes, entre livros, artigos e sites na Internet, a

    partir dos quais se fez uma compilao de tal forma que o leitor possa, com

    certa facilidade, obter conhecimento sobre solues para problemas que

    ocorrem com freqncia. As referncias consultadas encontram-se ao final

    deste material, sob o ttulo Referncias.

  • Padres de Projeto

    Romualdo Rubens de Freitas viii

    SUMRIO Introduo ......................................................................................................... 9 Singleton Criao ........................................................................................ 12 Factory Method Criao .............................................................................. 17 Abstract Factory Criao ............................................................................ 22 Command Comportamento ........................................................................ 26 Chain of

Recommended

View more >