SlideShare uma empresa Scribd logo
Design Patterns PSS  Aula I (Introdução)
Design Patterns A definição clássica para  Pattern  é a seguinte: "um  Pattern  descreve um problema que se repete várias vezes em um determinado meio, e em seguida descreve o núcleo da sua solução, de modo que esta solução possa ser usada milhares e milhares de vezes” [ Christopher Alexander ]. Patterns  são soluções genéricas e reutilizáveis, aplicáveis em classes de problemas bem conhecidos. Soluções que um dia funcionaram, tornam-se receitas para situações similares (desde que estas soluções tenham sido projetadas com flexibilidade).
Patterns  - Histórico A idéia de armazenar informação sobre padrões observados em um contexto pode ser atribuída ao arquiteto Christopher Alexander e foi elaborada no contexto de arquitetura. Alexander define um ordem para a aplicação de  patterns ; O enfoque do  pattern  é problema em questão; É sustentada a teoria que  patterns  podem gerar arquiteturas completas. No seu livro  The Timeless Way of Building,  mostra como  patterns  podem ser aplicados na construção de casas, assim como no planejamento de bairros e cidades.
Patterns  - Histórico Em 1994, 4 autores – Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides -publicaram o primeiro catálogo de  Design Patterns  para programas orientado a objetos:  Design Patterns  – Elements of Reusable Object-Oriented software (GoF book).
Estrutura do Gamma Introdução; Estudo de Casos; Catálogo de  Design Patterns .
Estrutura de um  Pattern Nome - A identificação do  Pattern  é importante pois ele torna-se membro do vocabulário do projetista e de seus colegas.  Problema - descreve quando aplicar o  Pattern . Apresenta a classe de problemas em questão e seu contexto.  Solução - descreve os elementos que fazem parte do design, seus relacionamentos, responsabilidades e colaborações.  Conseqüências - os resultados e efeitos causados pela aplicação do  Pattern .
Classificações de  Patterns Podem ser classificados quanto ao: Escopo: Classes; Objetos. Quanto ao seu propósito: Criacional; Estrutural; Comportamental.
Organização de  Design Patterns Quanto ao escopo: classes:  patterns  tratam do relacionamento entre classes e subclasses; objetos:  patterns  tratam relacionamentos entre objetos e por isso podem ser alterados em tempo de execução. Ex: Um padrão estrutural de classe  utiliza herança para compor as classes, enquanto um padrão estrutural de objeto descreve como estes devem ser agrupados.
Organização de  Design Patterns Quanto ao seu propósito: Criacional; Estrutural; Comportamental.
Organização de  Design Patterns Quanto ao seu propósito: Criacional: Diz respeito ao processo de criação de um objeto; Ex1: Builder - separa a construção de um objeto complexo de sua representação, desta maneira um mesmo processo pode ser utilizado para criar diferentes representações. Estrutural; Comportamental.
Organização de  Design Patterns Quanto ao seu propósito: Criacional; Estrutural: Diz respeito a composição de objetos e classes; Ex:  Composite  - Compõe objetos em árvores de agregação (relacionamento parte-todo). O  Composite  permite que objetos agregados sejam tratados como um único objeto. Comportamental.
Organização de  Design Patterns Quanto ao seu propósito: Criacional; Estrutural; Comportamental: Caracteriza o modo como classes e objetos interagem e compartilham responsabilidades.  Ex:  Iterator  - Provê um modo de acesso a elementos de um agregado de objetos, seqüencialmente, sem exposição de estruturas internas.
Organização dos  Design Patterns
Descrição de  Patterns Nome do  Pattern  e Classificação: Passa a fazer parte do vocabulário dos projetistas.  Propósito: Respostas para as perguntas - O quê o  Pattern  faz? Que tipo de problema ou característica particular de  Design  ele trata?  Também Conhecido Como: Conjunto de outros nomes (apelidos) conhecidos para o  Pattern , se existir algum.  Motivação: Um cenário que ilustra o problema de  Design  e como as estruturas de classes e objetos no  Pattern  o resolvem.  Aplicação: Respostas para as perguntas - Quais são as situações onde este  Pattern  pode ser aplicado? Quais são os exemplos de Designs que ele pode tratar? Como você pode reconhecer estas situações?  Estrutura: Uma representação gráfica das classes no  Pattern . Participantes: As classes e/ou objetos que participam no  Design Pattern , e suas responsabilidades.
Descrição de  Patterns Colaborações: Como os participantes interagem para cumprir suas responsabilidades.  Conseqüências: Respostas para as perguntas - Como o  Pattern  alcança seus objetivos? Quais são os resultados do uso do  Pattern ?  Implementação: Dicas e técnicas que  Designer  deve saber, e possíveis armadilhas para as quais ele deve estar preparado.  Código Exemplo: Fragmentos de código que ilustrem como o  Pattern  deve ser implementado  Usos Conhecidos: Exemplos de utilização do  Pattern  em sistemas já implementados. Patterns  Relacionados: Lista de todos os  Patterns  fortemente relacionados ao  Pattern  em questão e as suas  principais diferenças.
Iterator Nome do  Pattern  e Classificação:  Iterator  - Funcional de objeto Propósito:  Provê um modo de acesso a elementos de um agregado de objetos,  seqüencialmente , sem exposição de estruturas internas. Também Conhecido Como:  Cursor Motivação:  Um objeto que possua agregações deve permitir que seus elementos sejam acessados sem que sua estrutura interna seja exposta. De uma maneira geral pode se desejar que estes elemento sejam percorridos em várias ordens. De frente para trás, vice-versa, ou mesmo em ordem aleatória, sem no entanto ter que modificar a interface de lista dependendo do percorrimento. Este  pattern  permite que isto seja feito.
Iterator Motivação: Cabe ao  pattern  o acesso e o percorrimento da lista de diferentes formas. Estas funções são armazendas em um objeto  Iterator . A classe  Iterator  define um interface para o acesso aos elemento da lista. Os objetos listas são    responsáveis por criar seus  próprios iteradores e o fazem   através do “ Factory   Method ” Cliente
Iterator Aplicação: O uso do  pattern  se aplica quando se quer: acessar o conteúdo de objeto agregados sem expor sua representação interna; suportar mais de uma maneira de percorrer a lista; prover interface única para percorrer estruturas agregadas diferentes.
Iterator Estrutura:  Cliente
Iterator Participantes:  Iterator Define um interface para o acesso e percorrimento; ConcreteIterator Implementa a interface do  Iterator ; Mantéma informação sobre o elemento percorrido; Aggregate Define um interface para a criação do objeto Iterator; ConcreteAggregate Implementa o método da interface que retorna uma instância do ConcreteIterator. Colaborações:  ConcreteIterator  mantém a referência ao objeto que está sendo percorrido, podendo calcular qual o elemento seguinte.
Iterator Conseqüências:  Suporta variações na ordem de percorrimento de maneira fácil; Simplifica a interface  Aggregate ;  Mais de um percorrimento pode acontecer, já que o seu estado é armazenado em cada  Iterator . Implementação: …  Código Exemplo: ...  Usos Conhecidos: ... Patterns  Relacionados:  Composite : Estruturas recursivas; Factory Method ; Memento .
Dicas Design  Patterns  podem ajudar a: buscar objetos apropriados e sua granularidade: Objetos que representam processos ou algoritmos não existem na natureza mais são elementos fundamentais para se obter um  Design  flexível, especificar interfaces apropriadas Definir o problema, uma possível solução, todavia sem entrar em detalhes de implementação; Verificar o propósito de cada  pattern , segundo os intuitos de criação, estruturação e comportamento; Estudar como cada  pattern  pode se relacionar; Examinar problemas de um possível  redisign  (pag 24); Considerar o que pode ser variável no seu  design .
Patterns  – Exemplo 1 MVC -  (Model/View/Controller) é um trio de classes usadas para a construção de interfaces no Smalltalk-80.   Model  representa a aplicação em si ; View  é uma apresentação  de tela para uma aplicação ; Controller  define como a  interface do usuário reage  a estímulos externos.
Patterns  – Exemplo 1 A aplicação se comunica com suas visões quando seus atributos mudam, e as visões, por sua vez, se comunicam com a aplicação para acessar estes valores. ( subscribe / notify ) Uma visão usa uma instância de uma subclasse de  Controller  para implementar uma determinada estratégia de resposta.
Pattern  – Exemplo 1 MVC  desacopla visões e aplicação -  Observer ; desacopla objetos de modo que mudanças em um deles possam afetar outros; O MVC pode ser modelado com o uso de vários patterns como:  Observer ,  Composite ,  Strategy , o  Factory   Method  para especificar um controlador padrão para uma visão, e o  Decorator  para adicionar uma scrollbar a uma janela.
Catálogo de  Design Patterns Abstract Factory: Provê uma interface para criação de famílias de objetos relacionados ou interdependentes. Remove a dependência entre o cliente, que usa os objetos, e a classe dos objetos produzidos. Adapter: Converte a interface de uma classe em outra, esperada pelo cliente. O Adapter permite que classes que antes não poderiam trabalhar juntas, por incompatibilidade de interfaces, possam agora fazê-lo. Bridge: Separa uma abstração de sua implementação, de modo que ambas possam variar independentemente. Builder: Provê uma interface genérica para a construção incremental de agregações. Um Builder esconde os detalhes de como os componentes são criados, representados e compostos.
Catálogo de  Design Patterns Chain of Responsibility: Encadeia os objetos receptores e transporta a mensagem através da corrente até que um dos objetos a responda. Assim, separa (provê loose coupling) objetos transmissores dos receptores, dando a chance de mais de um objeto poder tratar a mensagem. Command: Encapsula uma mensagem como um objeto, de modo que se possa parametrizar clientes com diferentes mensagens. Separa, então, o criador da mensagem do executor da mesma. Composite: Compõe objetos em árvores de agregação (relacionamento parte-todo). O Composite permite que objetos agregados sejam tratados como um único objeto. Decorator: Anexa responsabilidades adicionais a um objeto dinâmicamente. Provê uma alternativa flexível para extensão de funcionalidade, sem ter que usar Herança.
Catálogo de  Design Patterns Facade: Provê uma interface unificada para um conjunto de interfaces em um subsistema. O Facade define uma interface alto nível para facilitar o uso deste subsistema. Factory Method: Define uma interface para criação de um objeto, permitindo que as suas subclasses decidam qual classe instanciar. O Factory Method deixa a responsabilidade de instanciação para as subclasses. Flyweight: Usa o compartilamento para dar suporte eficiente a um grande número de objetos com alto nível de granularidade. Interpreter: Usado para definição de linguagem. Define representações para gramáticas e abstrações para análise sintática. Iterator: Provê um modo de acesso a elementos de um agregado de objetos, sequencialmente, sem exposição de estruturas internas.
Catálogo de  Design Patterns Mediator: Desacopla e gerencia as colaborações entre um grupo de objetos. Define um objeto que encapsula as interações dentre desse grupo. Memento: Captura e externaliza o estado interno de um objeto (captura um "snapshot"). O Memento não viola o encapsulamento. Observer: Provê sincronização, coordenação e consistência entre objetos relacionados.  Prototype: Especifica os tipos de objetos a serem criados num sistema, usando uma instância protótipo. Cria novos objetos copiando este protótipo. Proxy: Provê Design para um controlador de acesso a um objeto. Singleton: Assegura que uma classe tenha apenas uma instância e provê um ponto global de acesso a ela.
Catálogo de  Design Patterns State: Deixa um objeto mudar seu comportamento quando seu estado interno muda, mudando, efetivamente, a classe do objeto.  Strategy: Define uma família de algoritmos, encapsula cada um deles, e torna a escolha de qual usar flexível. O Strategy desacopla os algoritmos dos clientes que os usa. Template Method: Define o esqueleto de um algoritmo em uma operação. O Template Method permite que subclasses componham o algoritmo e tenham a possibilidade de redefinir certos passos a serem tomados no processo, sem contudo mudá-lo. Visitor: Representa uma operação a ser realizada sobre elementos da estrutura de um objeto. O Visitor permite que se crie um nova operação sem que se mude a classe dos elementos sobre as quais ela opera.

Mais conteúdo relacionado

Mais procurados (20)

PPTX
Modelo cascata
Priscila Comparsi
 
PPTX
Metodologias de Desenvolvimento de Software
Álvaro Farias Pinheiro
 
PDF
Introdução a php
Allen Gomes Vidal
 
PDF
Introducao a Arquitetura de Software
UFPA
 
PDF
Modelos de Engenharia de Software
Nathalia Sautchuk Patricio
 
PDF
Business Process Modeling Notation –(BPMN)
elliando dias
 
PDF
Arquitetura de Software Visão Geral
sergiocrespo
 
PPTX
Aula - Metodologias Ágeis
Mauricio Cesar Santos da Purificação
 
PDF
Curso de HTML5 - Aula 01
Léo Dias
 
PDF
Diagramas de componentes
Portal_do_estudante_ADS
 
PDF
Arquitetura de Software
elliando dias
 
PDF
Introdução CSS
Giorgia Barreto Lima Parrião
 
PPTX
SOA - Uma Breve Introdução
André Borgonovo
 
PPT
Caso De Uso
Rayol Neto
 
PPT
Engenharia Requisitos - Aula4 06 03 2006
Luís Fernando Richter
 
PDF
1.Introdução Banco de Dados
vini_campos
 
PPT
X-Zone - Garantia da Qualidade de Software
AlexandreBartie
 
PDF
Aula UML - Unified Modeling Language
Cloves da Rocha
 
PDF
Documentação de Arquitetura de Software Aplicando o C4 Model
Douglas Alonso
 
PPTX
Desenvolvimento orientado a testes - TDD
washingtonlslima
 
Modelo cascata
Priscila Comparsi
 
Metodologias de Desenvolvimento de Software
Álvaro Farias Pinheiro
 
Introdução a php
Allen Gomes Vidal
 
Introducao a Arquitetura de Software
UFPA
 
Modelos de Engenharia de Software
Nathalia Sautchuk Patricio
 
Business Process Modeling Notation –(BPMN)
elliando dias
 
Arquitetura de Software Visão Geral
sergiocrespo
 
Aula - Metodologias Ágeis
Mauricio Cesar Santos da Purificação
 
Curso de HTML5 - Aula 01
Léo Dias
 
Diagramas de componentes
Portal_do_estudante_ADS
 
Arquitetura de Software
elliando dias
 
SOA - Uma Breve Introdução
André Borgonovo
 
Caso De Uso
Rayol Neto
 
Engenharia Requisitos - Aula4 06 03 2006
Luís Fernando Richter
 
1.Introdução Banco de Dados
vini_campos
 
X-Zone - Garantia da Qualidade de Software
AlexandreBartie
 
Aula UML - Unified Modeling Language
Cloves da Rocha
 
Documentação de Arquitetura de Software Aplicando o C4 Model
Douglas Alonso
 
Desenvolvimento orientado a testes - TDD
washingtonlslima
 

Destaque (8)

PDF
Agile Vale 2011 - A Semente Não Entendida de Todas as Metodologias
Fabio Akita
 
PDF
Design sem Designer - PUCPR
Hugo Cristo
 
PDF
Design Thinking for the Business Case
Peer Insight | Innovation Consulting
 
PPT
Design patterns - Abstract Factory Pattern
Annamalai Chockalingam
 
PPTX
Design pattern (Abstract Factory & Singleton)
paramisoft
 
PPSX
METODOLOGIA DE DESIGN
Andrea Dalforno
 
PDF
Design process
Divonis.com
 
PPTX
Aula 07 metodologia munari
Marcio Duarte
 
Agile Vale 2011 - A Semente Não Entendida de Todas as Metodologias
Fabio Akita
 
Design sem Designer - PUCPR
Hugo Cristo
 
Design Thinking for the Business Case
Peer Insight | Innovation Consulting
 
Design patterns - Abstract Factory Pattern
Annamalai Chockalingam
 
Design pattern (Abstract Factory & Singleton)
paramisoft
 
METODOLOGIA DE DESIGN
Andrea Dalforno
 
Design process
Divonis.com
 
Aula 07 metodologia munari
Marcio Duarte
 
Anúncio

Semelhante a design patterns - introdução (20)

PPT
Apresentação Introdução Design Patterns
Lucas Simões Maistro
 
PPT
Padrões de design orientado a objetos
Glauco Vinicius Argentino de Oliveira
 
PPT
pec-12-patterns-intro.ppt
ssuser7025cf
 
PDF
Sld 4
spawally
 
PDF
Padroes De Projeto
ejdn1
 
ODP
Design Patterns
Glaucio Scheibel
 
PDF
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...
Lucas Furtado de Oliveira
 
PDF
Padrões de Projeto de Software
Fabio Moura Pereira
 
DOC
Travalho versao final
Thiago Antonius
 
PDF
Script c
Raphael
 
PDF
Padrões de Projeto (GoF)
Álvaro Farias Pinheiro
 
PPTX
5507 os principais design patterns
Andre Baltieri
 
DOCX
Trabalho de análise e projeto 2
Meire Dos Santos Aguiar
 
PDF
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
Ryan Padilha
 
PDF
Diagrama classes
Gabriel Faustino
 
PDF
Design Patterns
Leonardo Lucas Lana
 
PPTX
Apresentação versão 1.5
oliveiraprog
 
PPTX
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Lorran Pegoretti
 
PDF
Questionário sobre padrões de projeto revisão da tentativa
AluisioSantos4
 
PPTX
Design pattern
ricardoalesc
 
Apresentação Introdução Design Patterns
Lucas Simões Maistro
 
Padrões de design orientado a objetos
Glauco Vinicius Argentino de Oliveira
 
pec-12-patterns-intro.ppt
ssuser7025cf
 
Sld 4
spawally
 
Padroes De Projeto
ejdn1
 
Design Patterns
Glaucio Scheibel
 
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...
Lucas Furtado de Oliveira
 
Padrões de Projeto de Software
Fabio Moura Pereira
 
Travalho versao final
Thiago Antonius
 
Script c
Raphael
 
Padrões de Projeto (GoF)
Álvaro Farias Pinheiro
 
5507 os principais design patterns
Andre Baltieri
 
Trabalho de análise e projeto 2
Meire Dos Santos Aguiar
 
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
Ryan Padilha
 
Diagrama classes
Gabriel Faustino
 
Design Patterns
Leonardo Lucas Lana
 
Apresentação versão 1.5
oliveiraprog
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Lorran Pegoretti
 
Questionário sobre padrões de projeto revisão da tentativa
AluisioSantos4
 
Design pattern
ricardoalesc
 
Anúncio

Mais de elliando dias (20)

PDF
Clojurescript slides
elliando dias
 
PDF
Why you should be excited about ClojureScript
elliando dias
 
PDF
Functional Programming with Immutable Data Structures
elliando dias
 
PPT
Nomenclatura e peças de container
elliando dias
 
PDF
Geometria Projetiva
elliando dias
 
PDF
Polyglot and Poly-paradigm Programming for Better Agility
elliando dias
 
PDF
Javascript Libraries
elliando dias
 
PDF
How to Make an Eight Bit Computer and Save the World!
elliando dias
 
PDF
Ragel talk
elliando dias
 
PDF
A Practical Guide to Connecting Hardware to the Web
elliando dias
 
PDF
Introdução ao Arduino
elliando dias
 
PDF
Minicurso arduino
elliando dias
 
PDF
Incanter Data Sorcery
elliando dias
 
PDF
Rango
elliando dias
 
PDF
Fab.in.a.box - Fab Academy: Machine Design
elliando dias
 
PDF
The Digital Revolution: Machines that makes
elliando dias
 
PDF
Hadoop + Clojure
elliando dias
 
PDF
Hadoop - Simple. Scalable.
elliando dias
 
PDF
Hadoop and Hive Development at Facebook
elliando dias
 
PDF
Multi-core Parallelization in Clojure - a Case Study
elliando dias
 
Clojurescript slides
elliando dias
 
Why you should be excited about ClojureScript
elliando dias
 
Functional Programming with Immutable Data Structures
elliando dias
 
Nomenclatura e peças de container
elliando dias
 
Geometria Projetiva
elliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
elliando dias
 
Javascript Libraries
elliando dias
 
How to Make an Eight Bit Computer and Save the World!
elliando dias
 
Ragel talk
elliando dias
 
A Practical Guide to Connecting Hardware to the Web
elliando dias
 
Introdução ao Arduino
elliando dias
 
Minicurso arduino
elliando dias
 
Incanter Data Sorcery
elliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
elliando dias
 
The Digital Revolution: Machines that makes
elliando dias
 
Hadoop + Clojure
elliando dias
 
Hadoop - Simple. Scalable.
elliando dias
 
Hadoop and Hive Development at Facebook
elliando dias
 
Multi-core Parallelization in Clojure - a Case Study
elliando dias
 

Último (9)

PDF
IA - Grupo J.pdf para trabalho de inteligencia artificial
juanaraujo139815
 
PDF
Apresentação de Manipulação de strings em Python .pdf
Gabriel Vitor
 
PDF
Apresentação sobre Funções Matemáticas e o módulo.pdf
Gabriel Vitor
 
PPTX
NR-13.pptx treinamento sobre a norma regulamentadora
SimoniBorges1
 
PDF
11 Roberto.pdf astronomia e astronautica
henzoa798
 
PDF
SENAC Modelagem de Dados - Aula02 curso de ADS.pdf
JhonataLamim1
 
PDF
Zeebo: Uma brevíssima introdução. - David Glotz
BluePanther6
 
PDF
Assistente de Suporte e Manutenção de Computadores.pdf
EudesAlvesPessoa
 
PDF
SENAC Modelagem de Dados - Aula01 do curso de ADSpdf
JhonataLamim1
 
IA - Grupo J.pdf para trabalho de inteligencia artificial
juanaraujo139815
 
Apresentação de Manipulação de strings em Python .pdf
Gabriel Vitor
 
Apresentação sobre Funções Matemáticas e o módulo.pdf
Gabriel Vitor
 
NR-13.pptx treinamento sobre a norma regulamentadora
SimoniBorges1
 
11 Roberto.pdf astronomia e astronautica
henzoa798
 
SENAC Modelagem de Dados - Aula02 curso de ADS.pdf
JhonataLamim1
 
Zeebo: Uma brevíssima introdução. - David Glotz
BluePanther6
 
Assistente de Suporte e Manutenção de Computadores.pdf
EudesAlvesPessoa
 
SENAC Modelagem de Dados - Aula01 do curso de ADSpdf
JhonataLamim1
 

design patterns - introdução

  • 1. Design Patterns PSS Aula I (Introdução)
  • 2. Design Patterns A definição clássica para Pattern é a seguinte: "um Pattern descreve um problema que se repete várias vezes em um determinado meio, e em seguida descreve o núcleo da sua solução, de modo que esta solução possa ser usada milhares e milhares de vezes” [ Christopher Alexander ]. Patterns são soluções genéricas e reutilizáveis, aplicáveis em classes de problemas bem conhecidos. Soluções que um dia funcionaram, tornam-se receitas para situações similares (desde que estas soluções tenham sido projetadas com flexibilidade).
  • 3. Patterns - Histórico A idéia de armazenar informação sobre padrões observados em um contexto pode ser atribuída ao arquiteto Christopher Alexander e foi elaborada no contexto de arquitetura. Alexander define um ordem para a aplicação de patterns ; O enfoque do pattern é problema em questão; É sustentada a teoria que patterns podem gerar arquiteturas completas. No seu livro The Timeless Way of Building, mostra como patterns podem ser aplicados na construção de casas, assim como no planejamento de bairros e cidades.
  • 4. Patterns - Histórico Em 1994, 4 autores – Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides -publicaram o primeiro catálogo de Design Patterns para programas orientado a objetos: Design Patterns – Elements of Reusable Object-Oriented software (GoF book).
  • 5. Estrutura do Gamma Introdução; Estudo de Casos; Catálogo de Design Patterns .
  • 6. Estrutura de um Pattern Nome - A identificação do Pattern é importante pois ele torna-se membro do vocabulário do projetista e de seus colegas. Problema - descreve quando aplicar o Pattern . Apresenta a classe de problemas em questão e seu contexto. Solução - descreve os elementos que fazem parte do design, seus relacionamentos, responsabilidades e colaborações. Conseqüências - os resultados e efeitos causados pela aplicação do Pattern .
  • 7. Classificações de Patterns Podem ser classificados quanto ao: Escopo: Classes; Objetos. Quanto ao seu propósito: Criacional; Estrutural; Comportamental.
  • 8. Organização de Design Patterns Quanto ao escopo: classes: patterns tratam do relacionamento entre classes e subclasses; objetos: patterns tratam relacionamentos entre objetos e por isso podem ser alterados em tempo de execução. Ex: Um padrão estrutural de classe utiliza herança para compor as classes, enquanto um padrão estrutural de objeto descreve como estes devem ser agrupados.
  • 9. Organização de Design Patterns Quanto ao seu propósito: Criacional; Estrutural; Comportamental.
  • 10. Organização de Design Patterns Quanto ao seu propósito: Criacional: Diz respeito ao processo de criação de um objeto; Ex1: Builder - separa a construção de um objeto complexo de sua representação, desta maneira um mesmo processo pode ser utilizado para criar diferentes representações. Estrutural; Comportamental.
  • 11. Organização de Design Patterns Quanto ao seu propósito: Criacional; Estrutural: Diz respeito a composição de objetos e classes; Ex: Composite - Compõe objetos em árvores de agregação (relacionamento parte-todo). O Composite permite que objetos agregados sejam tratados como um único objeto. Comportamental.
  • 12. Organização de Design Patterns Quanto ao seu propósito: Criacional; Estrutural; Comportamental: Caracteriza o modo como classes e objetos interagem e compartilham responsabilidades. Ex: Iterator - Provê um modo de acesso a elementos de um agregado de objetos, seqüencialmente, sem exposição de estruturas internas.
  • 13. Organização dos Design Patterns
  • 14. Descrição de Patterns Nome do Pattern e Classificação: Passa a fazer parte do vocabulário dos projetistas. Propósito: Respostas para as perguntas - O quê o Pattern faz? Que tipo de problema ou característica particular de Design ele trata? Também Conhecido Como: Conjunto de outros nomes (apelidos) conhecidos para o Pattern , se existir algum. Motivação: Um cenário que ilustra o problema de Design e como as estruturas de classes e objetos no Pattern o resolvem. Aplicação: Respostas para as perguntas - Quais são as situações onde este Pattern pode ser aplicado? Quais são os exemplos de Designs que ele pode tratar? Como você pode reconhecer estas situações? Estrutura: Uma representação gráfica das classes no Pattern . Participantes: As classes e/ou objetos que participam no Design Pattern , e suas responsabilidades.
  • 15. Descrição de Patterns Colaborações: Como os participantes interagem para cumprir suas responsabilidades. Conseqüências: Respostas para as perguntas - Como o Pattern alcança seus objetivos? Quais são os resultados do uso do Pattern ? Implementação: Dicas e técnicas que Designer deve saber, e possíveis armadilhas para as quais ele deve estar preparado. Código Exemplo: Fragmentos de código que ilustrem como o Pattern deve ser implementado Usos Conhecidos: Exemplos de utilização do Pattern em sistemas já implementados. Patterns Relacionados: Lista de todos os Patterns fortemente relacionados ao Pattern em questão e as suas principais diferenças.
  • 16. Iterator Nome do Pattern e Classificação: Iterator - Funcional de objeto Propósito: Provê um modo de acesso a elementos de um agregado de objetos, seqüencialmente , sem exposição de estruturas internas. Também Conhecido Como: Cursor Motivação: Um objeto que possua agregações deve permitir que seus elementos sejam acessados sem que sua estrutura interna seja exposta. De uma maneira geral pode se desejar que estes elemento sejam percorridos em várias ordens. De frente para trás, vice-versa, ou mesmo em ordem aleatória, sem no entanto ter que modificar a interface de lista dependendo do percorrimento. Este pattern permite que isto seja feito.
  • 17. Iterator Motivação: Cabe ao pattern o acesso e o percorrimento da lista de diferentes formas. Estas funções são armazendas em um objeto Iterator . A classe Iterator define um interface para o acesso aos elemento da lista. Os objetos listas são responsáveis por criar seus próprios iteradores e o fazem através do “ Factory Method ” Cliente
  • 18. Iterator Aplicação: O uso do pattern se aplica quando se quer: acessar o conteúdo de objeto agregados sem expor sua representação interna; suportar mais de uma maneira de percorrer a lista; prover interface única para percorrer estruturas agregadas diferentes.
  • 20. Iterator Participantes: Iterator Define um interface para o acesso e percorrimento; ConcreteIterator Implementa a interface do Iterator ; Mantéma informação sobre o elemento percorrido; Aggregate Define um interface para a criação do objeto Iterator; ConcreteAggregate Implementa o método da interface que retorna uma instância do ConcreteIterator. Colaborações: ConcreteIterator mantém a referência ao objeto que está sendo percorrido, podendo calcular qual o elemento seguinte.
  • 21. Iterator Conseqüências: Suporta variações na ordem de percorrimento de maneira fácil; Simplifica a interface Aggregate ; Mais de um percorrimento pode acontecer, já que o seu estado é armazenado em cada Iterator . Implementação: … Código Exemplo: ... Usos Conhecidos: ... Patterns Relacionados: Composite : Estruturas recursivas; Factory Method ; Memento .
  • 22. Dicas Design Patterns podem ajudar a: buscar objetos apropriados e sua granularidade: Objetos que representam processos ou algoritmos não existem na natureza mais são elementos fundamentais para se obter um Design flexível, especificar interfaces apropriadas Definir o problema, uma possível solução, todavia sem entrar em detalhes de implementação; Verificar o propósito de cada pattern , segundo os intuitos de criação, estruturação e comportamento; Estudar como cada pattern pode se relacionar; Examinar problemas de um possível redisign (pag 24); Considerar o que pode ser variável no seu design .
  • 23. Patterns – Exemplo 1 MVC - (Model/View/Controller) é um trio de classes usadas para a construção de interfaces no Smalltalk-80. Model representa a aplicação em si ; View é uma apresentação de tela para uma aplicação ; Controller define como a interface do usuário reage a estímulos externos.
  • 24. Patterns – Exemplo 1 A aplicação se comunica com suas visões quando seus atributos mudam, e as visões, por sua vez, se comunicam com a aplicação para acessar estes valores. ( subscribe / notify ) Uma visão usa uma instância de uma subclasse de Controller para implementar uma determinada estratégia de resposta.
  • 25. Pattern – Exemplo 1 MVC desacopla visões e aplicação - Observer ; desacopla objetos de modo que mudanças em um deles possam afetar outros; O MVC pode ser modelado com o uso de vários patterns como: Observer , Composite , Strategy , o Factory Method para especificar um controlador padrão para uma visão, e o Decorator para adicionar uma scrollbar a uma janela.
  • 26. Catálogo de Design Patterns Abstract Factory: Provê uma interface para criação de famílias de objetos relacionados ou interdependentes. Remove a dependência entre o cliente, que usa os objetos, e a classe dos objetos produzidos. Adapter: Converte a interface de uma classe em outra, esperada pelo cliente. O Adapter permite que classes que antes não poderiam trabalhar juntas, por incompatibilidade de interfaces, possam agora fazê-lo. Bridge: Separa uma abstração de sua implementação, de modo que ambas possam variar independentemente. Builder: Provê uma interface genérica para a construção incremental de agregações. Um Builder esconde os detalhes de como os componentes são criados, representados e compostos.
  • 27. Catálogo de Design Patterns Chain of Responsibility: Encadeia os objetos receptores e transporta a mensagem através da corrente até que um dos objetos a responda. Assim, separa (provê loose coupling) objetos transmissores dos receptores, dando a chance de mais de um objeto poder tratar a mensagem. Command: Encapsula uma mensagem como um objeto, de modo que se possa parametrizar clientes com diferentes mensagens. Separa, então, o criador da mensagem do executor da mesma. Composite: Compõe objetos em árvores de agregação (relacionamento parte-todo). O Composite permite que objetos agregados sejam tratados como um único objeto. Decorator: Anexa responsabilidades adicionais a um objeto dinâmicamente. Provê uma alternativa flexível para extensão de funcionalidade, sem ter que usar Herança.
  • 28. Catálogo de Design Patterns Facade: Provê uma interface unificada para um conjunto de interfaces em um subsistema. O Facade define uma interface alto nível para facilitar o uso deste subsistema. Factory Method: Define uma interface para criação de um objeto, permitindo que as suas subclasses decidam qual classe instanciar. O Factory Method deixa a responsabilidade de instanciação para as subclasses. Flyweight: Usa o compartilamento para dar suporte eficiente a um grande número de objetos com alto nível de granularidade. Interpreter: Usado para definição de linguagem. Define representações para gramáticas e abstrações para análise sintática. Iterator: Provê um modo de acesso a elementos de um agregado de objetos, sequencialmente, sem exposição de estruturas internas.
  • 29. Catálogo de Design Patterns Mediator: Desacopla e gerencia as colaborações entre um grupo de objetos. Define um objeto que encapsula as interações dentre desse grupo. Memento: Captura e externaliza o estado interno de um objeto (captura um "snapshot"). O Memento não viola o encapsulamento. Observer: Provê sincronização, coordenação e consistência entre objetos relacionados. Prototype: Especifica os tipos de objetos a serem criados num sistema, usando uma instância protótipo. Cria novos objetos copiando este protótipo. Proxy: Provê Design para um controlador de acesso a um objeto. Singleton: Assegura que uma classe tenha apenas uma instância e provê um ponto global de acesso a ela.
  • 30. Catálogo de Design Patterns State: Deixa um objeto mudar seu comportamento quando seu estado interno muda, mudando, efetivamente, a classe do objeto. Strategy: Define uma família de algoritmos, encapsula cada um deles, e torna a escolha de qual usar flexível. O Strategy desacopla os algoritmos dos clientes que os usa. Template Method: Define o esqueleto de um algoritmo em uma operação. O Template Method permite que subclasses componham o algoritmo e tenham a possibilidade de redefinir certos passos a serem tomados no processo, sem contudo mudá-lo. Visitor: Representa uma operação a ser realizada sobre elementos da estrutura de um objeto. O Visitor permite que se crie um nova operação sem que se mude a classe dos elementos sobre as quais ela opera.