©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/65 Padrões de Projeto.

Slides:



Advertisements
Apresentações semelhantes
Soluções elegantes para problemas recorrentes
Advertisements

Desenvolvimento de aplicativos Orientados a Objetos: Definição e Características THIAGO IDEALI.
PADRÕES DE PROJETO..
Engenharia de Software
Projeto de Sistemas de Software
Projeto de Sistemas de Software
Projeto de Sistemas de Software Leandra Mara da Silva
1 Introdução aos padrões de projeto (GoF) Conceitos preliminares –Mecanismos de herança –Princípio de Substituição de Liskov –Acoplamento concreto x Acoplamento.
Introdução ao paradigma de programação: Orientado a Objetos
Análise Estruturada O mais amplamente usado dos métodos de modelagem de requisitos Modelos que retratam fluxo e o conteúdo da informação (dados e controle)
Padrões - introdução O que é um padrão?
Trabalho de Conclusão de Curso Moisés Alves Carneiro Filho
Padrão de Construção Factory Method
Aspectos Avançados em Engenharia de Software Aula 3 Fernanda Campos
RUP: Fluxo de Análise e Projeto
Princípios e Conceitos de Software(v2)
Fundamentos da Engenharia de Software
Singleton e Adapter Professor: Nazareno Andrade
Desenvolvimento de Sistemas Orientados a Aspectos
Sistemas Distribuídos
Estudo de Caso: um editor de documentos
Gerência de Configuração - GC
Orientação a Objetos Parte I
Programação Orientada à Objetos
Rodrigo Cândido da Silva Instrutor VOffice / Globalcode
Prof. Silvestri – todos os direitos reservados SISTEMAS DISTRIBUIDOS Aula 5 Eduardo Silvestri
SISTEMAS DISTRIBUIDOS Aula 4
Design Pattern (Padrões de Projeto)
Capturando Requisitos com Use Cases Disciplina: Estudo do RUP Autor: Tiago Lima Massoni Orientacao: Augusto Sampaio Paulo Borba.
RUP - Cap. 4 – Processo Centrado na Arquitetura
Padrões de Projeto.
Introdução Padrões de Projeto
Padrões de Interação com o Usuário
Design Patterns (Padrões de Projeto)
Requisitos de Software
Padrões de Projeto Abstract Factory.
Tarciane Andrade Análise de Casos de Uso Tarciane Andrade
April 05 Prof. Ismael H. F. Santos - 1 Modulo I Princípios e Padrões de Projeto de SW em Java Professores Eduardo Bezerra –
Modelo de Análise e Projeto
Projetando Objetos com Responsabilidades
Design Patterns A adoção dos padrões terá um efeito profundo e duradouro sobre a forma de escrevermos programas Ward Cunningham e Ralph Johnson.
Padrões de Projeto de Software Orientado a Objetos
1 Padrões: Composite (p. 163) Objetivo: compor objetos em estruturas de árvores para representar relações de parte/todo. “Composite” permite tratar objetos.
Padrões de projeto M.Sc. Sílvio Bacalá Jr..
1 Design Patterns Israel Rios. 2 Origens A idéia de padrões de projeto não teve origem na ciência da computação Christopher Alexander A Pattern Language:
Padrão Composite Definição
Jobson Ronan Padrões GoF Jobson Ronan
Introdução a Orientação a Objetos
Análise e Projeto de Sistemas
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ANÁLISE E PROJETO DE SISTEMAS Semana /08/2012 Professor Leomir J. Borba-
1 - Introdução a Padrões de Projeto
Padrões de Projetos Professora Lucélia. Conceitos É uma solução conhecida para um problema comum São técnicas que nos dão uma boa solução para determinados.
Padrões de Projetos Orientados a Objetos I Wolley W. Silva.
PADROES DE PROJETO PROF. OSIEL MARLON. PADRÕES DE PROJETO INTRODUÇÃO Padrões de projeto têm emergido como uma das mais promissoras abordagens para a melhoria.
©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/38 Análise e Projeto de Sistemas Introdução à Análise e ao Projeto de Software.
IF 718 Análise e Projeto de Sistemas Augusto Sampaio Vitor Braga (Estágio docência) Camila Sá (Monitora) Parte do material cedido pela Qualiti Software.
Padrões de Projeto. O que são?  Soluções provenientes de diversos projetos e utilizados por diversos programadores;  Documentados em catálogos como.
Projeto de Arquitetura de Software
Análise do Sistema Alexandre Mota
UCSal – Bacharelado em Informática Tópicos Especiais em Informática II Profa. Semíramis Assis
1 Especificação de Sistemas de Software e a UML. 2 Modelagem de sistema A modelagem de sistema auxilia o analista a entender a funcionalidade do sistema.
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ANÁLISE E PROJETO DE SISTEMAS Aula /08/2012 Professor Leomir J. Borba-
CIn-UFPE1 Projeto de Gerenciamento de Dados. CIn-UFPE2 Objetivos n Definir o que significa gerenciamento de dados do sistema; n Entender abordagens diferentes.
©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/41 Análise e Projeto de Sistemas Arquitetura de Software.
Padrões de Projeto de Criação Padrões de Projeto Orientados a Objetos Prof a. Danielle Martin Universidade de Mogi das Cruzes.
1 Padrões de Projeto de Software Orientado a Objetos Programação Orientada a Objetos Prof. Fabio Kon - IME/USP.
1 Introdução aos Padrões de Projetos Créditos: Prof. Fabio Kon - IME/USP Adaptações: Prof. Nécio de Lima Veras.
Introdução a Padrões de Projeto Padrões de Projeto Orientado a Objetos Profa. Danielle Martin Universidade de Mogi das Cruzes.
Programação Orienta a Objetos (SI) Análise e Projetos de Sistemas (LCC) 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/65 Padrões de Projeto

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE2/65 Objetivos n Explicar:  O que é um padrão de projeto  Alguns padrões que já foram identificados no desenvolvimento de software  Como aplicar padrões de projeto durante o desenvolvimento de software  Os benefícios e dificuldades que podem surgir quando usamos padrões de projeto

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE3/65 Motivação n Projetar software OO reusável e de boa qualidade é difícil  Mistura de específico + genérico  Impossível acertar da primeira vez n Projetistas experientes usam soluções com as quais já trabalharam no passado n Padrões de projeto  Uso sistemático de: ènomes, èexplicações, èe avaliações n Durante a última década, uma “comunidade de padrões” foi desenvolvida

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE4/65 Algumas definições n “Cada padrão descreve um problema que ocorre freqüentemente em seu ambiente, e então descreve o núcleo de uma solução para o problema, de maneira que você possa usar esta solução um milhão de vezes, sem fazê-la do mesmo jeito duas vezes.” Christopher Alexander (Arquiteto e Urbanista), 1977 n “Um padrão é a abstração de uma forma concreta que ocorre muitas vezes em contextos não arbitrários específicos.” Riehle and Zullighoven, 1996 n “Resolve um problema. É um conceito provado. A solução não é óbvia. Descreve um relacionamento. Os padrões têm um componente humano significativo.” Coplien 1996.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE5/65 Características dos Padrões de Projeto de Software n Algo comprovado que captura e comunica os conhecimentos das melhores práticas n Descoberto, não inventado n Soluções Sucintas e de Fácil Aplicação  Capturam, de forma sucinta e facilmente aplicável, soluções de projeto de programas de computador que foram desenvolvidas e evoluíram com o passar do tempo n Soluções Exaustivamente Refinadas  Resultados de um longo processo de projeto, re-projeto, teste e reflexão sobre o que torna um sistema mais flexível, reusável, modular e compreensível n Soluções Compartilhadas  Construídas em grupo  Através do uso de um vocabulário comum

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE6/65 Outros Tipos de Padrões n Padrões de Análise:  Descrevem grupos de conceitos que representam construções comuns na modelagem do domínio. Estes padrões podem ser aplicáveis em um domínio ou em muitos n Padrões de Arquitetura:  Descrevem a estrutura e o relacionamento dos componentes de um sistema de software n Padrões de Processo

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE7/65 Catálogos e Linguagens de Padrões n Um catálogo de padrões é um grupo de padrões que estão relacionados de uma certa forma e podem ser usados juntos ou independentemente n Os padrões numa linguagem de padrões estão relacionados, e trabalham juntos para solucionar problemas num domínio específico  um conjunto de padrões que trabalham juntos para solucionar um grande problema

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE8/65 Princípios Presentes nos Padrões n Abstração n Encapsulamento n Proteção de informação n Modularização n Separação de conteúdos n Acoplamento e coesão n Suficiência, completude e primitividade n Separação entre interface e implementação n Único ponto de referência n Dividir para conquistar

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE9/65 Anti-Padrões n São uma maneira de documentar soluções recorrentes que não tiveram sucesso èPodem também incluir soluções re-trabalhadas que sejam efetivas

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE10/65 Elementos para Documentação de um Padrão de Projeto Nome: Resume em uma ou duas palavras: o problema, as soluções e conseqüências do uso do padrão. Deve ser facilmente lembrado, reflete o conteúdo do padrão. Problema: Descreve quando aplicar o padrão. Explica o problema e seu contexto. Sintomas e condições. Solução: Elementos que constituem o design, seus relacionamentos, responsabilidades e colaboradores. Conseqüências: Resultados e compromissos decorrentes da aplicação do padrão. Impactos sobre a flexibilidade, extensibilidade, portabilidade ou desempenho do sistema.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE11/65 Outros Elementos para Documentação n Um exemplo de uso n A razão que justifica a solução escolhida n Padrões relacionados n Uso conhecido do padrão n Lista de outros nomes para o padrão n Amostra de código em uma linguagem de programação

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE12/65 Tipos de Padrões de Projeto n Padrões de Projeto foram introduzidos para a comunidade OO através de  Gamma E., et al, Design Patterns, Addison-Wesley, 1994 n Eles categorizaram (23) padrões em três tipos:  Estruturais (7)  Criacionais (5)  Comportamentais (11) n divididos em 2 escopos:  Classe  Objeto

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE13/65 Escopo n Classe  Relacionamentos entre classes e suas subclasses  Não é preciso executar nenhum código para determinar o uso dos padrões  Estáticos: fixos em tempo de compilação n Objeto  Confia em ponteiros de objetos  Dinâmicos: relacionamentos entre objetos podem ser alterados em tempo de execução

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE14/65 Detalhamento dos Tipos de Padrões n Estruturais  Tratam de compor classes e objetos para formar estruturas grandes e complexas  Associados à maneira como classes e objetos são organizados estruturalmente  Oferecem formas efetivas para usar conceitos OO como herança, agregação e composição  Focam na abstração da estrutura

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE15/65 Detalhamento dos Tipos de Padrões n Criacionais  Associados ao processo de criação de objetos  Tornam um sistema independente de como seus objetos são criados, compostos e representados n Comportamentais  Tratam de algoritmos e como atribuir responsabilidades entre objetos  Associados à maneira que objetos e classes distribuem suas responsabilidades para realizar uma tarefa  Focam na abstração do comportamento

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE16/65 Alguns Exemplos n Padrão Composite (estrutural) n Padrão Singleton (criacional) n Padrão State (comportamental)

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE17/65 Padrão Estrutural: Composite n Nome: Composite n Problema:  Se existe um requisito para representar hierarquias todo- parte, então ambos objetos (todo e parte) oferecem a mesma interface para objetos cliente. n Contexto:  Numa aplicação tanto o objeto que contém quanto o que é componente devem oferecer o mesmo comportamento. èObjetos cliente devem ser capazes de tratar objetos compostos ou componentes do mesmo jeito.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE18/65 Padrão Estrutural: Composite n Forças:  O requisito que os objetos, tanto composto como componente, ofereçam a mesma interface, sugere que eles pertençam à mesma hierarquia de herança. èIsto permite que operações sejam herdadas e redefinidas com a mesma assinatura (polimorfismo).  A necessidade de representar hierarquias todo-parte indica a necessidade de uma estrutura de agregação

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE19/65 Padrão Estrutural: Composite n Solução : Combinar hierarquias de herança e agregação.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE20/65 Padrão Estrutural: Composite n Solução:  Ambas subclasses, Leaf e Composite, têm uma operação redefinida usando polimorfismo anOperation(). èNa classe Composite esta operação redefinida invoca a operação relevante a partir de seus componentes usando um loop.  A subclasse Composite também tem operações adicionais para gerenciar a hierarquia de agregação, então os componentes podem ser adicionados ou removidos.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE21/65 Exemplo do Padrão Composite: Graphical drawing package Graphic draw getChild removeGraphic addGraphic CompositeGraphic draw getChild removeGraphic addGraphic Line draw Rectangle draw Circle draw Client 0..*

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE22/65 Outro Exemplo do Padrão Composite: Campanhas de Midia

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE23/65 Padrão Composite: Exemplo de Uso n Diretórios e arquivos em um sistema de arquivos

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE24/65 Padrão de Criação: Singleton n Nome: Singleton n Problema: Como pode ser construída uma classe que só pode ter uma única instância e que pode ser acessada globalmente dentro da aplicação? n Contexto: Em algumas aplicações, uma classe deve ter exatamente uma instância.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE25/65 Padrão de Criação: Singleton n Forças:  Uma abordagem para tornar um objeto acessível globalmente é colocá-lo como uma variável global.  Outra abordagem é não criar uma instância de objeto em nenhum lugar, mas usar operações e atributos de classe (chamados ‘static’ em C++ e Java).

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE26/65 Padrão de Criação: Singleton n Solução:  Criar uma classe com uma operação de classe (ou estática, ex: Java, C++) getInstance(), que: èQuando a classe é acessada pela primeira vez, a instância do objeto é criada e retornada para o cliente. èNos acessos subseqüentes a getInstance() nenhuma instância adicional é criada, mas a identidade do objeto existente é retornada.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE27/65 Padrão de Criação: Singleton Singleton static uniqueInstance singletonData getInstance() getSingletonData() singletonOperation() return uniqueInstance

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE28/65 Padrão de Criação: Singleton n Vantagens:  Oferece acesso controlado à única instância do objeto, pois a classe Singleton encapsula a instância.  A classe Singleton pode ter subclasses. Pode-se determinar que subclasses são instanciadas quando a classe Singleton é acessada pela primeira vez.  Uma variação do padrão pode ser usada para criar um número específico de instâncias, se for requerido.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE29/65 Padrão Singleton: Um Exemplo de Uso n O sistema de gerenciamento de campanhas de uma empresa precisa guardar informações a respeito da empresa. n Estas informações só devem ser guardadas em um único lugar dentro da aplicação, mas serão usadas por diferentes objetos. n Quando um objeto cliente precisa acessar o objeto Company, pode enviar a mensagem getCompanyInstance() e receber o identificador do objeto na resposta. n O objeto cliente pode então enviar uma mensagem getCompanydetails() para o objeto Company

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE30/65 Padrão Singleton: Exemplo

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE31/65 Padrão Singleton: Exemplo n Mas a companhia opera como uma empresa separada em cada país  diferentes detalhes registrados da empresa para cada país n A classe Company só é instanciada uma vez. Ela é acessível globalmente. n Diferentes subclasses de Company são instanciadas quando necessário, dependendo das circunstâncias em tempo de execução.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE32/65 Padrão Singleton: Exemplo

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE33/65 Padrão Comportamental: State n Nome: State n Problema: Um objeto exibe um comportamento diferente quando seu estado interno muda, fazendo o objeto parecer ter mudado a classe em tempo de execução. n Contexto: Ema algumas aplicações um objeto pode ter o comportamento complexo que seja dependente do seu estado. A resposta para uma mensagem específica varia de acordo com o estado do objeto.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE34/65 Padrão Comportamental: State n Forças:  O objeto tem comportamento complexo que deve ser dividido em elementos menos complexos. Uma ou mais operações têm comportamento que variam de acordo com o estado do objeto.  Tipicamente a operação teria muitas sentenças condicionais dependentes do estado.  Uma abordagem é ter operações públicas diferentes para cada estado, mas objetos cliente precisariam saber o estado do objeto para poderem chamar a operação adequada

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE35/65 Padrão Comportamental: State n Solução:  Separar o estado dependente do comportamento do objeto original e alocar este comportamento para um série de outros objetos, um para cada estado.  Estes objetos estado têm apenas responsabilidade relacionadas ao comportamento do respectivo estado.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE36/65 Padrão Comportamental: State Context operation( ) State {abstract} operation( ) ConcreteStateA ConcreteStateB operation( )

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE37/65 Participantes do Padrão State Context define a interface de interesse para clientes. Mantém uma instância de uma subclasse ConcreteState que define o estado corrente State define uma interface para encapsulamento do comportamento associado com um estado específico do Contexto Subclasses ConcreteState cada subclasse implementa um comportamento associado com um estado do Contexto

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE38/65 Padrão Comportamental: State n Vantagens:  O comportamento do estado é localizado e o comportamento para diferentes sub-estados é separado. Isto facilita qualquer modificação do comportamento do estado, em particular a adição de estados extra.  Transições de estado são explícitas. O objeto estado, que está ativo, indica o estado atual do objeto Contexto.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE39/65 Padrão Comportamental: State n Desvantagens:  O objeto Estado pode ser criado ou removido quando o objeto Context muda o estado, introduzindo assim um overhead no processamento.  O uso do padrão State introduz pelo menos uma mensagem extra, a mensagem da classe Context para classe State, adicionando assim mais overhead no processamento.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE40/65 Padrão State: Um Sistema de Biblioteca LoanStatus {abstract} CheckOut Available OnLoan CheckOut Copy CheckOut Available:: CheckOut (book; user) //Check out book to a user OnLoan:: CheckOut (book; user) //Error: ‘Book already out’ As subclasses concretas definem o método de acordo com o estado que elas representam

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE41/65 Padrão State: Exemplo de Campanhas

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE42/65 Questões Relativas ao Uso de Padrões n Existe algum padrão que trata um problema similar? n O contexto do padrão é consistente com o problema real? n As conseqüências do uso de padrão são aceitáveis? n O padrão tem uma solução alternativa que pode ser mais aceitável? n Existe uma solução mais simples? n Existem algumas restrições que sejam impostas pelo ambiente de software que está sendo usado?

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE43/65 Problemas com o Catálogo de Padrões n Armazenamento, busca e manutenção da documentação de padrões n Padrões colecionados num catálogo precisam ser agrupados n Projetistas descobrindo novos padrões precisam considerar onde o seu novo padrão se encaixa no catálogo n Publicação de padrões disponíveis  Todos os usuários precisam ser atualizados sobre o conteúdo do catálogo

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE44/65 Perigos do Uso de Padrões n O uso de padrões de uma maneira descontrolada pode originar projetos sobre-carregados. n Desenvolvedores:  Precisam de tempo para entender os catálogos de padrões relevantes  Precisam de fácil acesso a catálogos relevantes  Precisam ser treinados no uso de padrões

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE45/65 O Catálogo de Padrões de Gamma

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE46/65 Padrões de Criação: Objeto n Singleton  Garante que uma classe tenha apenas uma única instância, e oferece um ponto global para acessá-la. n Fábrica Abstrata (Abstract Factory)  Oferece uma interface para criar famílias de objetos relacionados sem especificar suas classes concretas. n Construtor (Builder)  Separa a construção de um objeto complexo de sua representação, então o mesmo processo de construção pode criar diferentes representações. n Protótipo (Prototype)  Especifica os tipos de objetos para criar usando uma instância prototípica, e cria novos objetos copiando deste protótipo.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE47/65 Padrões de Criação: Classe n Método Factory  Define uma interface para criação de um objeto, mas deixa a subclasse decidir que classe instanciar.  Permite a classe retardar a instanciação da subclasse.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE48/65 Padrões Estruturais: Objeto n Adaptador (Adapter)  Converte a interface de uma classe em outra interface que os clientes esperam. n Ponte (Bridge)  Desacopla uma abstração da sua implementação, as duas podem variar independentemente (herança em tempo de execução) n Composite  Compõe objetos em estruturas para representar hierarquias todo-parte. Permite que clientes tratem tanto os objetos individuais quanto as composições de objetos uniformemente.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE49/65 Padrões Estruturais: Objeto n Decorador (Decorator)  Anexa responsabilidades adicionais para um objeto dinamicamente. n Fachada (Façade)  Oferece uma interface unificada para um conjunto de interfaces de um subsistema. n Peso Mosca (Flyweight)  Usa compartilhamento para apoiar eficientemente um grande número de objetos de fina granularidade. n Proxy  Oferece um ponto de acesso para outro objeto controlar o acesso.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE50/65 Padrões Estruturais: Classe n Adaptador (Adapter)  Converte a interface de uma classe para outra interface que os clientes esperam. n Base de Template (Template Base)  Usa classes base do template para especificar associações.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE51/65 Padrões Comportamentais: Objeto n Cadeia de Responsabilidade (Chain of Responsability)  Evita o acoplamento do emissor de um pedido ao seu receptor n Observador (Observer)  Quando um objeto muda de estado, todos os seus dependentes são notificados e atualizados automaticamente.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE52/65 Padrões Comportamentais: Objeto (cont.) n Iteração (Iterator)  Oferece uma maneira para acessar os elementos de um objeto agregado seqüencialmente sem expor a sua representação. n Mediador (Mediator)  Define um objeto que encapsula a forma como um conjunto de objetos interagem entre si.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE53/65 Padrões Comportamentais: Objeto (cont.) n Comando  Encapsula a requisição como um objeto. n “Memento”  Captura e externaliza um estado interno do objeto para que este estado possa ser recuperado depois. n Estado (State)  Permite que um objeto altere seu comportamento quando seu estado interno muda.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE54/65 Padrões Comportamentais: Objeto (cont.) n Estratégia  Define uma família de algoritmos, encapsula cada um, e torna-os inter-cambiáveis. n Visitante  Representa uma operação a ser realizada para os elementos da estrutura de um objeto.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE55/65 Padrões Comportamentais: Classe n Interpretador  Dada uma linguagem, define uma representação para sua gramática com um interpretador que usa a representação para interpretar sentenças na linguagem. n Template de método  Permite que subclasses redefinam certos passos de um algoritmo sem alterar a estrutura do algoritmo.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE56/65 Padrões de Projeto para Arquitetura em Camadas

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE57/65 Padrão Façade n Intenção  Prover uma interface unificada para o conjunto de interfaces de um subsistema. Define uma interface de alto nível que faz um subsistema mais fácil de usar. n Motivação  Estruturar um sistema em subsistemas contribui para reduzir sua complexidade. A dependência entre subsistemas pode ser minimizada através do uso de um objeto Fachada, o qual provê uma interface única e uniforme para as diversas funcionalidades de um subsistema.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE58/65 Padrão Façade: Estrutura e Participantes Façade subsystem classes Client

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE59/65 Padrão Façade: Aplicabilidade n Use o Padrão Façade quando:  Você quer prover uma interface simplificada para um subsistema complexo. Um Façade pode prover uma visão simples do subsistema, suficiente para a maioria dos clientes  Existem muitas dependências entre clientes e classes da implementação. O Façade reduz esta dependência e promove independência e portabilidade  Você quer criar sistemas em camadas. Um Façade provê o ponto de entrada para cada camada (nível) do subsistema.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE60/65 Padrão Façade: Conseqüências n Promove acoplamento fraco entre o subsistema e seus clientes n No entanto, não evita que aplicações possam acessar diretamente as subclasses do sistema, se assim o desejarem.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE61/65 Padrão Persistent Data Collections (PDC) n Nome: PDC n Problema: Como melhorar os níveis de manutenção e reuso quando usando mecanismos de persistência em aplicações orientadas a objeto? n Contexto: Durante o desenvolvimento de aplicações orientadas a objeto que utilizam mecanismos de persistência, através de APIs (Application Programming Interfaces) específicas, é possível que o código gerado misture a lógica da aplicação com os mecanismos de persistência, dificultando assim a manutenção e o reuso.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE62/65 Padrão PDC n Forças:  Desenvolvedores devem poder endereçar os aspectos de negócio de uma organização independente das operações de persistência.  O mecanismos de persistência podem mudar durante o período de vida da aplicação.  Classes de negócio podem ser usadas por outras aplicações.  O mecanismo de persistência deve lidar de forma eficiente com a habilitação de conexões com o banco de dados e com o gerenciamento de transações.  A performance do sistema não deve ser afetada.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE63/65 Padrão PDC n Solução:  Separar as classes de análise em duas categorias: èClasses descrevendo os objetos de negócio. èClasses para a manipulação e armazenamento de dados, com código específico para o tratamento de persistência.

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE64/65 Padrão PDC BusinessCollection specificSystemService() > IBusinessData insert() remove() update() search() Façade PersistentDataCollection insert() remove() update() search() BusinessBasic > IPersistenceMechanism beginTransaction() connect() commit() PersistenceMechanism beginTransaction() connect() commit() 1..* 0..*

©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE65/65 Leituras Adicionais n Gamma E, Helm R, Johnson R and Vlissides J. Design Patterns: Elements of Reusable Object- Oriented Software. Addison-Wesley n n bin/wikic/wikic?JavaAWT bin/wikic/wikic?JavaAWT n n eaPublications/PersistentDataCollectionsPLOP2001. pdf eaPublications/PersistentDataCollectionsPLOP2001. pdf