Vous êtes sur la page 1sur 146

Padres Gang of Four Fernando Pedrosa fpedrosa@gmail.

com

Fernando Pedrosa Lopes

Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides - Padres de Projeto. Editora: Bookman Companhia

Fernando Pedrosa Lopes

A orientao a objetos, por si s, no garante sistemas reusveis e extensveis Profissionais experientes conseguem projetar bons sistemas, novatos no Primeiro aprende-se as regras

Algoritmos, estruturas, linguagens

Depois os princpios
Projeto estruturado, Projeto OO

Fernando Pedrosa Lopes

Mas, sistemas complexos necessitam de projetos robustos, que foram postos prova
Estes Padres de Projeto tm que ser compreendidos, lembrados e usados

Padres de Projeto representam solues comprovadas para problemas recorrentes em desenvolvimento de software

Fernando Pedrosa Lopes

A ideia original surgiu em 1979, na Arquitetura e Engenharia Civil Christopher Alexander, arquiteto, queria melhorar o processo de projeto de edifcios e reas urbanas Hoje, projetos de engenharia civil seguem padres estabelecidos

Arcos, colunas, portas, janelas, etc. a soluo para tudo isso j bem conhecida

Fernando Pedrosa Lopes

"Cada padro descreve um problema que ocorre repetidas vezes em nosso ambiente, e ento descreve o ncleo da soluo para aquele problema, de tal maneira que pode-se usar essa soluo milhes de vezes sem nunca faz-la da mesma forma duas vezes

Christopher Alexander, sobre padres na arquitetura e engenharia civil


Fernando Pedrosa Lopes 6

Na Engenharia de Software, quatro autores (Gang of Four) se basearam em Christopher Alexander para criar Padres de Projeto de software Em 1994 descreveram 23 padres em seu livro

Hoje ele j est na sua trigsima sexta edio Mais de 500 mil cpias vendidas, traduzido para 13 lnguas

Fernando Pedrosa Lopes

Descrio de uma soluo para resolver um problema genrico de projeto em um contexto especfico. [...] Um padro de projeto d nome, abstrai e identifica os aspectos-chave de uma estrutura de projeto comum para torn-la reutilizvel

Erich Gamma, et. al, sobre padres de projeto de software

Fernando Pedrosa Lopes

Padres capturam a estrutura esttica e a colaborao dinmica entre objetos parcitipantes no projeto de sistemas So especialmente bons para descrever como e por que resolver problemas no funcionais Facilitam o reuso de solues arquiteturais que deram certo antes Aumentam a coeso, diminuem o acoplamento

Fernando Pedrosa Lopes 9

Padres de projeto so compostos por quatro elementos essenciais


Nome do padro Problema a ser resolvido Soluo dada pelo padro Consequncias

Fernando Pedrosa Lopes

10

Um identificador utilizado para resumir


O problema em questo Suas solues Suas consequncias

Aumenta o vocabulrio e melhora a comunicao A parte mais difcil de programao dar bons nomes s variveis

Fernando Pedrosa Lopes

11

Descreve quando aplicar o padro Explica o problema e seu contexto Pode conter uma lista de pr condies que precisam estar presentes antes de levar em considerao a aplicao do padro

Fernando Pedrosa Lopes

12

Descrio abstrata de como o padro resolve o problema em questo Descreve os elementos que compem

Relacionamentos Responsabilidades Colaboraes

Inclui algum exemplo concreto de implementao


Porm o padro deve ser adaptado ao seu contexto especfico
Fernando Pedrosa Lopes 13

Vantagens e desvantagens de aplicar o padro Esta seo serve para

Avaliar vrias alternativas de padres Entender os custos e desafios Entender os benficios de aplicar o padro

Inclui anlise de impacto envolvendo


Flexibilidade Extensibilidade Portabilidade
Fernando Pedrosa Lopes 14

Solues prontas, que podem ser codificadas diretamente nas classes e reutilizadas sem adaptao (como APIs, colees de cdigo, etc.) Projetos para contextos abrangentes e complexos (uma aplicao ou subsistema inteiro)

So aplicveis em situaes especficas

Fernando Pedrosa Lopes

15

Podem ser classificados por propsito Padres de Criao


Abstraem o processo de criao de objetos a partir da instanciao de classes

Padres Estruturais
Tratam da forma como classes e objetos esto organizados para formar estruturas maiores

Padres Comportamentais
Preocupam-se com algoritmos e responsabilidades dos objetos
Fernando Pedrosa Lopes 16

Podem ser subclassificados por escopo Padres de Classes

Tratam de relaes entre classes e subclasses (herana) So estticos, definidos em tempo de compilao

Padres de Objetos
Tratam das relaes entre objetos, que podem mudar em tempo de execuo

Fernando Pedrosa Lopes

17

Fernando Pedrosa Lopes

18

(INFRAERO - FCC 2009) [52] Os padres de projeto (design patterns) I. foram testados: refletem a experincia e conhecimento dos desenvolvedores que utilizaram estes padres com sucesso em seu trabalho; II. so reutilizveis: fornecem uma soluo pronta que s no pode ser adaptada para diferentes problemas; III. so expressivos: formam um vocabulrio comum para expressar grandes solues sucintamente; IV. facilitam o aprendizado: reduzem o tempo de aprendizado de uma determinada biblioteca de classes; V. diminuem retrabalho: quanto mais cedo so usados, menor ser o retrabalho em etapas mais avanadas do projeto. Est INCORRETO o que consta APENAS em (A) I. (B) II. (C) III. (D) IV. (E) V

Fernando Pedrosa Lopes

19

(DECEA - CESGRANRIO 2009) [33] A equipe de desenvolvimento de sistemas de uma empresa utiliza padres de projetos (design patterns) em seus projetos orientados a objetos. Nesse contexto, NO uma caracterstica o(a) (A) uso de solues especficas e distintas para projetos similares. (B) identificao de problemas comuns de projeto de software. (C) utilizao de solues testadas e bem documentadas. (D) utilizao eficiente de herana, polimorfismo e composio. (E) facilidade na converso de um modelo de anlise em um modelo de implementao.

Fernando Pedrosa Lopes

20

(SERPRO - CESPE 2010) [82] O emprego de padres de projeto reusveis, como faade, builder e singleton, uma prtica com nvel inferior de abstrao, quando comparado ao emprego de estilos arquiteturais de software, como camadas, cliente-servidor e peer-to-peer.

Fernando Pedrosa Lopes

21

Fernando Pedrosa Lopes

22

Proporciona uma interface para criar famlias de objetos relacionados ou dependentes sem especificar suas classes concretas Use Abstract Factory quando:

O sistema deve ser configurado com uma de mltiplas famlias de produtos Estes produtos relacionados so projetados para serem utilizados juntos, e voc quer garantir essa restrio

Fernando Pedrosa Lopes

23

Famlia de produtos #2

Famlia de produtos #1
Fernando Pedrosa Lopes 24

Fbrica abstrata
Fbricas concretas

Produto abstrato

Produtos concretos

Fernando Pedrosa Lopes

25

A fbrica escolhida em tempo de execuo

Fernando Pedrosa Lopes

26

(CENSIPAM - CESPE 2006) [57-I] Um software est sendo desenvolvido e algumas decises foram tomadas quando do seu projeto. A seguir, tem-se as decises I, II e III que devero ser atendidas usando-se padres de projeto (design patterns) adequados. I Os formatos dos dados de entrada sero validados por mtodos nas classes que os modelam. Por exemplo, para validar uma senha, a classe Senha ter um mtodo apropriado. Como o software ser fornecido para clientes cujos dados tero diferentes formatos, essas classes devem ser substitudas em conjunto e essas substituies no devem resultar em alteraes nos cdigos que instanciam essas classes
A deciso I pode ser atendida usando-se o padro de projeto Abstract Factory;

Fernando Pedrosa Lopes

27

Separa a construo de um objeto complexo da sua representao, de forma que o mesmo processo possa criar diferentes tipos de representaes Use Builder quando:
O algoritmo para criar um objeto deve ser independente de suas partes e de como elas so montadas

Dica: enquanto Abstract Factory enfatiza famlias de objetos, Builder constri partes de objetos passo a passo
Fernando Pedrosa Lopes 28

Coordena a sequncia de construo dos objetos

Constri e junta as partes dos objetos

Partes a serem construdas


Fernando Pedrosa Lopes 29

Produto a ser construdo Partes do produto

Classe construtora abstrata (genrica)

Mtodos para construir cada parte

Fernando Pedrosa Lopes

30

Classe construtora concreta (especfica). Constri as partes do produto

Classe diretora. Coordena a ordem de construo das partes

Fernando Pedrosa Lopes

31

Seta o builder na classe diretora

Constri as partes

Retorna o objeto construdo

Fernando Pedrosa Lopes

32

(IRB - ESAF 2006) [58-I] A inteno do Padro de Projeto Builder, tambm conhecido como Command, adaptar a interface de uma ou mais classes para permitir que classes com interfaces incompatveis possam interagir.
(BACEN - CESGRANRIO 2010) [33-B] Builder garante que uma classe seja instanciada somente uma vez, fornecendo tambm um ponto de acesso global. (SERPRO CESPE 2010) [88] No padro builder, a responsabilidade pela criao de instncias compartilhada por um diretor e um construtor, sendo o vnculo entre eles estabelecido pelo cliente do padro.

Fernando Pedrosa Lopes

33

Define uma interface para criar um objeto, mas deixa as subclasses decidirem qual classe instanciar Use Factory Method quando

Uma classe no pode antecipar a classe de objetos que ela deve criar Uma classe quer que suas subclasses especifiquem os objetos que ela cria

Fernando Pedrosa Lopes

34

Fernando Pedrosa Lopes

35

Produto abstrato

Produto concreto

Produto concreto

Factory

Fernando Pedrosa Lopes

36

Que saudao devemos usar, Senhor ou Senhora? Em vez de usar vrios ifs, deixamos para a Fbrica decidir!

Fernando Pedrosa Lopes

37

(INFRAERO - FCC 2009) [53] NO um elemento contido no padro de projeto Factory Method (A) Product. (B) ConcreteProduct. (C) Director. (D) Creator. (E) ConcreteCreator. (TRE/MS - FCC 2007) [50-C] Mtodo Fbrica prov a habilidade de retornar o estado do objeto a seu estado anterior.

Fernando Pedrosa Lopes

38

Especifica os tipos de objetos para criar usando uma instncia prototpica, e cria novos objetos copiando este prottipo (clonando o objeto original) Use Prototype quando:

O sistema possui componentes cujo estado inicial tem poucas variaes, e conveniente disponibilizar um conjunto pr estabelecido de prottipos que do origem aos objetos que compem o sistema
Fernando Pedrosa Lopes 39

Fernando Pedrosa Lopes

40

Prottipo abstrato

Prottipos concretos Classe cliente

Baseado no tipo passado como parmetro, so retornados clones dos objetos originais
Fernando Pedrosa Lopes 41

(IRB - ESAF 2006) [58-III] A inteno do Padro de Projeto Prototype permitir a criao de famlias de objetos relacionados ou dependentes atravs de uma nica interface e sem que a classe concreta seja especificada. Por exemplo, cria-se uma classe abstrata que declara uma interface genrica para criao dos controles visuais e uma classe abstrata para criao de cada tipo de controle. Em cada um dos padres tecnolgicos contemplados existir uma classe concreta que dever conter a implementao relativa a cada controle.

Fernando Pedrosa Lopes

42

Garante que uma classe tem apenas uma instncia e prov um ponto de acesso global a ela Use Singleton quando:

Deve haver exatamente uma instncia de uma classe, e ela deve ser acessvel aos clientes a partir de um ponto de acesso conhecido

Fernando Pedrosa Lopes

43

Fernando Pedrosa Lopes

44

Este o nico modo de acessar a instncia singular da classe

Fernando Pedrosa Lopes

45

(IRB - ESAF 2006) [58-II] A inteno do Padro de Projeto Singleton garantir que exista apenas uma instncia de sua classe. (BNDES - CESGRANRIO 2009) [53] Por motivo de segurana, deseja-se adicionar registro (log) das operaes efetuadas no sistema de contabilidade de uma empresa. O arquiteto do sistema decide que deve existir somente uma instncia de uma classe de registro (log) e que esta ser o ponto de acesso global para os demais componentes do sistema. Que padro de projeto pode ser utilizado nesse caso? (A) Iterator (B) Visitor (C) Bridge (D) Memento (E) Singleton

Fernando Pedrosa Lopes

46

Fernando Pedrosa Lopes

47

Converte a interface de uma classe em outra interface que normalmente no poderiam trabalhar juntas Use o Adapter quando:

Voc quer usar uma classe existente, e sua interface no adequada quela que voc precisa

Fernando Pedrosa Lopes

48

Fernando Pedrosa Lopes

49

Classe alvo (target): o que o cliente possui

Classe adaptada (adaptee): o que o cliente necessita Adaptador

Fernando Pedrosa Lopes

50

O cliente faz a chamada usando o plug de dois pinos, que o que ele enxerga, mas na verdade esta chamada est sendo adaptada para um plug de trs pinos

Fernando Pedrosa Lopes

51

(DATAPREV - CESPE 2006) [68] As seguintes situaes justificam o uso do padro Adapter: necessrio um objeto local que se faa passar por um objeto localizado em outro espao de endereamento; necessrio controlar o acesso a um objeto; um objeto persistente deve ser carregado em memria somente quando for referenciado.
(SERPRO - CESPE 2008) [115] Adapter um padro estrutural utilizado para compatibilizar interfaces de modo que elas possam interagir.

Fernando Pedrosa Lopes

52

Desacopla uma interface de sua implementao, de forma que elas possa variar independentemente Use o Bridge quando:

Voc quer evitar um vnculo entre a abstrao e a implementao Mudanas na implementao de uma abstrao no deveriam ter impacto nos clientes, isto , seu cdigo no deveria ser recompilado

Fernando Pedrosa Lopes

53

Fernando Pedrosa Lopes

54

Classes que implementam a API de desenho. A implementao pode variar livremente

Fernando Pedrosa Lopes

55

Note como a abstrao de Implementao passada para c

Essas so as classes que o cliente enxerga. Ele quer usar suas funcionalidades, mas a implementao pode variar, como vimos no slide passado.

Fernando Pedrosa Lopes

56

possvel variar a implementao da abstrao, sem impacto no cliente

Fernando Pedrosa Lopes

57

(IRB - ESAF 2006) [58-IV] A inteno do Padro de Projeto Bridge garantir, quando desejvel, que uma interface possa variar independentemente das suas implementaes, como por exemplo, na implementao de um sistema grfico de janelas. (BACEN - CESGRANRIO 2010) [33-A] Bridge separa a construo de um objeto complexo de sua representao, de modo que o mesmo processo de construo possa criar diferentes representaes.

Fernando Pedrosa Lopes

58

(BNDES - CESGRANRIO 2009) [60] Ao consultar informaes a respeito dos padres de projeto Adapter e Bridge, um Analista de Sistemas identificou uma afirmativa INCORRETA. Assinale-a.
(A) Ambos promovem a flexibilidade ao fornecer um nvel de endereamento indireto para outro objeto. (B) Ambos so padres estruturais que possuem alguns atributos em comum. (C) O foco do Adapter a soluo de incompatibilidades entre duas interfaces existentes. (D) O Adapter inferior ao Bridge porque no evita a replicao de cdigo. (E) O Bridge estabelece uma ponte entre uma abstrao e suas possveis implementaes.

Fernando Pedrosa Lopes

59

Compe zero ou mais objetos similares de forma que eles possam ser manipulados como um s Use Composite quando:

Voc quer representar hierarquias partetodo de objetos Voc quer que o cliente ignore a diferena entre objetos compostos e objetos individuais

Fernando Pedrosa Lopes

60

Fernando Pedrosa Lopes

61

Classe composta

Classe folha

Fernando Pedrosa Lopes

62

Note que, para o cliente, tanto faz manipular uma folha ou uma composio de objetos

Fernando Pedrosa Lopes

63

(TRE/MS - FCC 2007) [50-D] Composite realiza a adaptao da interface de uma determinada classe para a interface que um cliente espera. (TRE/AP - CESPE 2007) [11-II] A implementao de montadores de rvores sintticas apiase mais no uso do padro Singleton que no uso do padro Composite.

Fernando Pedrosa Lopes

64

Anexa responsabilidades adicionais a um objeto dinamicamente Decoradores fornecem uma alternativa flexvel em relao a herana para estender funcionalidades Use o Decorator quando:

Quiser adicionar responsabilidades a objetos dinamicamente Quando a extenso por subclasses impraticvel
Fernando Pedrosa Lopes 65

Fernando Pedrosa Lopes

66

O decorator adiciona novos comportamentos

Fernando Pedrosa Lopes

67

Este mtodo pintar() combina o comportamento base mais o comportamento decorado

Fernando Pedrosa Lopes

68

(INMETRO - CESPE 2009) [88-C] Caso se adote o padro Decorator para adicionar responsabilidades a um conjunto de instncias que possuem uma superclasse comum denominada X, ento, quando um objeto da classe X for decorado por uma instncia de uma classe qualquer Y, os mtodos presentes na classe X no estaro presentes na interface de Y.

Fernando Pedrosa Lopes

69

Prov um substituto ou ponto atravs do qual um objeto possa controlar o acesso a outro Use Proxy quando:

Toda vez que h uma necessidade de uma referncia mais verstil ou sofisticada do que um simples ponteiro para um objeto

Fernando Pedrosa Lopes

70

Fernando Pedrosa Lopes

71

Objeto real

Proxy

Fernando Pedrosa Lopes

72

(Min. Comunicaes - CESPE 2008) [99] O padro proxy est corretamente documentado no seguinte diagrama UML.

Fernando Pedrosa Lopes

73

Prov uma interface unificada para um conjunto de interfaces de um subsistema Define uma interface de mais alto nvel que torna o subsistema mais fcil de manipular Use o Faade quando

Voc quiser prover uma interface simples para um subsistema complexo

Fernando Pedrosa Lopes

74

Fernando Pedrosa Lopes

75

Partes complexas, com vrias interfaces

Interface unificada na Faade

Fernando Pedrosa Lopes

76

(BNDES - CESGRANRIO 2009) [59] O presidente de uma empresa determinou que fosse disponibilizado um sistema de vendas na Internet. No entanto, o software de controle de estoque que deve ser acessado pela aplicao de vendas muito antigo e prov uma API (Application Programming Interface) de uso muito complicado. Para que os desenvolvedores possam acessar uma interface mais simples, o arquiteto do sistema pode determinar o uso do padro de projeto
(A) Prototype. (B) Decorator. (C) Observer. (D) Faade. (E) Flyweight.

Fernando Pedrosa Lopes

77

Usa compartilhamento para suportar grandes quantidades de objetos, de granularidade fina, de maneira eficiente Use o Flyweight quando

Uma aplicao utiliza um grande nmero de objetos e o custo para armazen-los muito alto A maioria dos estados dos objetos pode ser tornada extrnseca

Fernando Pedrosa Lopes

78

Fernando Pedrosa Lopes

79

Objeto Flyweight

Factory de Flyweights

Fernando Pedrosa Lopes

80

A fbrica retorna os Flyweights para o cliente, que os utiliza passando uma configurao de contexto.

Fernando Pedrosa Lopes

81

(MPE/BA FESMIP/BA 2011) [51] O Design Pattern que tem a finalidade de usar compartilhamento para suportar grandes quantidades de objetos, de granularidade fina, de maneira eficiente, denominado
a) Strategy b) Composite c) Flyweight d) State e) Builder

Fernando Pedrosa Lopes

82

Fernando Pedrosa Lopes

83

Define uma famlia de algoritmos, encapsula cada um, e faz deles intercambiveis Use Strategy quando:

Vrias classes relacionadas diferem apenas em seus comportamentos Voc precisa de diferentes variantes de um algoritmo Uma classe define muitos comportamentos e eles aparecem como declaraes condicionais nas suas operaes
Fernando Pedrosa Lopes 84

Fernando Pedrosa Lopes

85

Estratgias diferentes

Classe de contexto

Fernando Pedrosa Lopes

86

Diferentes variaes de algoritmos, apenas configurando a estratgia, sem a necessidade de estruturas de seleo

Fernando Pedrosa Lopes

87

(TRE/MS - FCC 2007) [50-B] Strategy permite a criao de uma famlia de algoritmos encapsulados na forma de objetos que podem ser selecionados e
substitudos dinamicamente pela aplicao. (INMETRO - CESPE 2009) [88-D] Caso se deseje incorporar a um software um conjunto de algoritmos de uma mesma famlia, os quais so aplicveis de forma intercambivel a um agregado de objetos similares, no qual o conjunto passvel de expanso em tempo de manuteno do software, ento mais recomendada a adoo do padro Composite.

Fernando Pedrosa Lopes

88

Evita o acoplamento do remetente de uma solicitao ao seu receptor Encadeia os objetos receptores, passando a solicitao ao longo da cadeira at que um objeto a trate Use o Chain of Responsibility quando:

Voc quer emitir uma solicitao para um dentre vrios objetos, sem especificar explicitamente o receptor

Fernando Pedrosa Lopes

89

Fernando Pedrosa Lopes

90

Handler genrico

Handlers concretos
Fernando Pedrosa Lopes 91

J1

J2
J3

B1

Fernando Pedrosa Lopes

92

(BACEN CESGRANRIO 2010) [33] Um arquiteto de software estuda que padres de projeto so apropriados para o novo sistema de vendas de uma empresa. Ele deve considerar que o padro a) Bridge separa a construo de um objeto complexo de sua representao, de modo que o mesmo processo de construo possa criar diferentes representaes. b) Builder garante que uma classe seja instanciada somente uma vez, fornecendo tambm um ponto de acesso global. c) Singleton separa uma abstrao de sua implementao, de modo que os dois conceitos possam variar de modo independente. d) Chain of Responsibility evita o acoplamento entre o remetente de uma solicitao e seu destinatrio, dando oportunidade para mais de um objeto tratar a solicitao. e) Template Method utiliza compartilhamento para suportar, eficientemente, grandes quantidades de objetos de granularidade fina.

Fernando Pedrosa Lopes

93

Fornece um meio de acessar sequencialmente os elementos de um objeto agregado sem expor a sua representao subjacente Use Iterator quando:

Voc quer acessar o contedo de uma coleo sem expor a sua representao interna

Fernando Pedrosa Lopes

94

Fernando Pedrosa Lopes

95

hasNext() => IsDone() next () => Next() seguido por CurrentItem() Note que no h First(). First() feito automaticamente quando o iterador criado.
Fernando Pedrosa Lopes 96

(TJ/PI - FCC 2009) [59] I. o responsvel pela especificao dos tipos de objetos a serem criados usando uma "instncia" prototpica e pela criao de novos objetos copiando este prottipo. II. Define uma interface de nvel mais alto que torna o subsistema mais fcil de usar e fornece uma interface nica para um subsistema com diversas interfaces; compe o grupo de padres estruturais. III. Integrante do grupo de padres comportamentais, ele prov uma forma de acessar sequencialmente os elementos de um agregado de objetos, sem expor a representao interna desse agregado. IV. As consequncias do uso deste padro que o encapsulamento mantido, j que objetos usam sua prpria informao para cumprir responsabilidades; leva ao fraco acoplamento entre objetos e alta coeso, uma vez que objetos fazem tudo que relacionado sua prpria informao.

Fernando Pedrosa Lopes

97

As afirmaes correspondem, respectivamente, aos padres a) Command, Iterator, Singleton e Expert. b) Controller, Expert, Singleton e Prototype. c) Command, Singleton, Controller e Faade. d) Prototype, Faade, Iterator e Expert. e) Adapter, Faade, Command e Iterator.

Fernando Pedrosa Lopes

98

Permite que um objeto mude o seu comportamento quando o seu estado interno mudar O objeto parecer ter mudado de classe Use State quando:

O comportamento de um objeto depende do seu estado, e ele deve mudar este comportamento em tempo de execuo de acordo com este estado

Fernando Pedrosa Lopes

99

Fernando Pedrosa Lopes

100

Fernando Pedrosa Lopes

101

Fernando Pedrosa Lopes

102

(COPEVE-UFAL UFAL 2011) [51] O diagrama de classes apresentado na figura a seguir no Representa fielmente um buffer que passa por estados sucessivos de transformao. Em outras palavras, um buffer, que est inicialmente vazio, depois pode ficar parcialmente cheio e, possivelmente, pode ficar cheio. Dentre as opes apresentadas a seguir, qual o padro de projetos que melhor se adequaria para modelar essa caracterstica dinmica do buffer?

a) Singleton. b) Dynamic behavior. c) Mediator. d) Composite. e) State.

Fernando Pedrosa Lopes

103

Encapsula uma requisio como um objeto, deixando-o, dessa forma, parametrizar os clientes com diferentes requisies Use o Command para:

Parametrizar objetos para realizar alguma ao Suportar undo Suportar transaes

Fernando Pedrosa Lopes

104

Fernando Pedrosa Lopes

105

O invoker controla os comandos. Aqui eles so genricos, para ser possvel vari-los mais tarde

Comando genrico (abstrato)

Fernando Pedrosa Lopes

106

Fernando Pedrosa Lopes

107

Fernando Pedrosa Lopes

108

(INMETRO CESPE 2009) [101] O uso do padro Command apresenta consequncias como um objetoCommand usualmente refratrio ao enfileiramento; um objeto Command usualmente transiente, isto , no passvel de serializao e o uso disseminado de Commands dificulta a estruturao de um sistema em operaes de alto nvel.

Fernando Pedrosa Lopes

109

Define uma dependncia entre objetos de forma que quando um objeto muda de estado, todos os seus dependentes so notificados e atualizados automaticamente Use o Observer quando

Quando uma mudana em um objeto requer mudanas em outros objetos e voc no sabe quantos objetos sero mudados

Fernando Pedrosa Lopes

110

Fernando Pedrosa Lopes

111

Notificador abstrato

Observador abstrato

Fernando Pedrosa Lopes

112

Notificador concreto Mudana de estado Notificao

Fernando Pedrosa Lopes

113

Observador concreto

Fernando Pedrosa Lopes

114

Fernando Pedrosa Lopes

115

(TRE/MS - FCC 2007) [50-A] Um exemplo de padro de projetos apresentado pelo Gang of Four (GOF) o Observer, que utilizado quando se faz necessria a instanciao de um e apenas um objeto de uma determinada classe.
(Casa da Moeda - CESGRANRIO 2009) [26] Em determinado sistema de anlise estatstica, necessrio definir uma dependncia um para muitos entre objetos, de forma que quando um objeto mudar de estado, todos os seus dependentes sejam notificados e atualizados. Que padro de projeto pode ser utilizado nessa situao? (A) AJAX (B) Memento (C) Singleton (D) Observer (E) JSON

Fernando Pedrosa Lopes

116

Representa uma operao a ser executada sobre os elementos da estrutura de um objeto Permite definir uma nova operao sem mudar as classes dos elementos sobre os quais opera Use Visitor quando:

Muitas operaes distintas e no relacionadas precisarem ser executadas sobre uma estrutura de objetos
Fernando Pedrosa Lopes 117

Fernando Pedrosa Lopes

118

Visitor (abstrato) Elemento (abstrato)

Elementos concretos. Sero visitados pelo Visitor.

Fernando Pedrosa Lopes

119

Estrutura de objetos

Visitor concreto (poderia haver outros um para cada operao)

Fernando Pedrosa Lopes

120

Ao percorrer os elementos que o aceitam, o Visitor pode executar operaes diferentes sobre eles

Fernando Pedrosa Lopes

121

(TRE/AP CESPE 2007) [34-III] A implementao de tratadores de eventos de interface grfica apia-se mais no uso do padro Observer que no uso do padro Visitor.

Fernando Pedrosa Lopes

122

Sem violar o encapsulamento, captura e externaliza o estado interno de um objeto, de forma que ele possa ser recuperado depois Use Memento quando:

Uma "fotografia" (parte) do objeto precisa ser salva, de forma que ela possa ser recuperada depois

Fernando Pedrosa Lopes

123

Fernando Pedrosa Lopes

124

Esta a classe que vai ter a sua fotografia salva

Esta a classe que vai guardar uma fotografia

Fernando Pedrosa Lopes

125

Fernando Pedrosa Lopes

126

(PETROBRAS CESGRANRIO 2006) [37] Quanto indicao para o uso dos padres de projeto FALSO afirmar que o padro: a) Abstract Factory indicado quando: um sistema deve ser independente de como seus produtos so criados, compostos ou representados; um sistema deve ser configurado como um produto de uma famlia de mltiplos produtos; uma famlia de objetosproduto for projetada para ser usada em conjunto, e voc necessita garantir esta restrio; voc quer fornecer uma biblioteca de classes de produtos e quer revelar somente suas interfaces, no suas implementaes. b) Builder indicado quando: uma classe no pode antecipar a classe de objetos que deve criar; uma classe quer que suas subclasses especifiquem os objetos que criam; classes delegam responsabilidade para uma dentre vrias subclasses auxiliares, e voc quer localizar o conhecimento de qual subclasse auxiliar que a delegada.

Fernando Pedrosa Lopes

127

c) Mediator indicado quando: um conjunto de objetos se comunica de maneiras bem definidas, porm complexas; a reutilizao de um objeto difcil porque ele referencia e se comunica com muitos outros objetos; um comportamento que est distribudo entre vrias classes deveria ser customizvel, ou adaptvel, sem excessiva especializao em subclasses. d) Memento indicado quanto: um instantneo de estado de um objeto deve ser salvo de maneira que possa ser restaurado para esse estado mais tarde; uma interface direta para obteno do estado exporia detalhes de implementao e romperia o encapsulamento do objeto. e) Composite indicado quando: quiser representar hierarquias partes-todo de objetos; quiser que os clientes sejam capazes de ignorar a diferena entre composies de objetos e objetos individuais, neste caso, os clientes trataro todos os objetos na estrutura composta de maneira uniforme

Fernando Pedrosa Lopes

128

Define um objeto que encapsula a forma como um conjunto de objetos interage Promove o acoplamento fraco ao evitar que os objetos se refiram explicitamente uns aos outros Use Mediator quando:
Um conjunto de objetos se comunica de maneira bem-definida,porm complexas O reso de um objeto difcil, porque ele referencia e se comunica com muitos outros objetos

Fernando Pedrosa Lopes

129

Fernando Pedrosa Lopes

130

Define a interface de comunicao entre objetos da classe Colleague

Super Classe de colegas

Fernando Pedrosa Lopes

131

Mediator Concreto para o Chat

Vrios tipos de colegas

Fernando Pedrosa Lopes

132

Na verdade, na implementao do mtodo send, o Mediator est sendo chamado, e ele quem se responsabiliza por coordenar a comunicao entre os vrios colegas
Fernando Pedrosa Lopes 133

(UNEAL - COPEVE 2010) 29. Definir um objeto que encapsula a forma como um conjunto de objetos interage. Promove o acoplamento fraco ao evitar que os objetos se refiram uns aos outros explicitamente. Qual opo abaixo corresponde descrio anterior? A) B) C) D) E) Inteno do padro de projeto proxy Inteno do padro de projeto composite Inteno do padro de projeto strategy Inteno do padro de projeto command Inteno do padro de projeto mediator

Fernando Pedrosa Lopes

134

Define o esqueleto de um algoritmo em uma operao, deferindo alguns passos para as subclasses Template Method permite que subclasses redefinam certos passos de algum algoritmo sem mudar a estrutura do algoritmo Use Template Method para:
Implementar a parte invariante de um algoritmo uma vez e deixar para as subclasses a implementao do comportamento que pode variar

Fernando Pedrosa Lopes

135

Fernando Pedrosa Lopes

136

Classe abstrata, com o mtodo template definido

Classes concretas, com implementaes especficas

Fernando Pedrosa Lopes

137

Executa-se o mesmo template method, que ir executar um bloco fixo de cdigo mais os trechos variveis, definidos em cada classe concreta

Fernando Pedrosa Lopes

138

(PETROBRAS - CESGRANRIO 2010) [33] Um dos participantes da equipe de desenvolvimento de um framework deve implementar uma operao em uma das classes desse framework. Seja X o nome dessa classe. Essa operao implementa um algoritmo em particular. Entretanto, h passos desse algoritmo que devem ser implementados pelos usurios do framework atravs da definio de uma subclasse de X. Sendo assim, qual o padro de projeto do catlogo GoF (Gang of Four) a ser usado pelo desenvolvedor do framework na implementao da referida operao, dentre os listados a seguir? a) Singleton. b) Decorator. c) Interpreter. d) Template Method. e) Observer.

Fernando Pedrosa Lopes

139

Dada uma linguagem, define uma representao para sua gramtica juntamente com um interpretador para as sentenas dessa linguagem Use Interpreter quando:

Houver uma linguagem para interpretar e voc puder representar as sentenas da linguagem como rvores sintticas abstratas

Fernando Pedrosa Lopes

140

Fernando Pedrosa Lopes

141

Sabemos como reproduzir uma nota em determinada frequencia, e sabemos as frequencias das notas. Mas como mapeamos uma Nota para uma determinada Frequncia? Precisamos de um Interpreter.

Fernando Pedrosa Lopes

142

Fernando Pedrosa Lopes

143

(MEC FGV 2009) [92] Os padres de projeto orientados a objeto podem ter finalidade de criao, estrutural ou comportamental. Os padres de criao se preocupam com o processo de criao de objetos. Os padres estruturais lidam com a composio de classes ou de objetos. Os padres comportamentais caracterizam as maneiras pelas quais classes ou objetos interagem e distribuem responsabilidades. Assinale a alternativa que apresenta apenas padres de projeto comportamentais.
a) Prototype, Abstract Factory e Builder. b) Singleton, Composite e Interpreter. c) Mediator, Interpreter e Command. d) Composite, Decorato e Proxy. e) Proxy, Builder e Mediator.

Fernando Pedrosa Lopes

144

[1] - [52] B, [33] A, [82] C [2] - [57-I] C [3] - [58-I] E, [33-B] E, [88] C [4] - [53] C, [50-C] E [5] - [58-III] E [6] - [58-II] C, [53] E [7] - [68] E, [115] C [8] - [58-IV] C, [33-A] E [9] - [60] D [10] - [50-D] E, [11-II] E [11] - [88-C] E

[12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25]

[99] E [59] D [51] C [50-B] C, [88-D] E [33] D [59] D [51] E [101] E [50-A] E, [26] D [34-III] V [37] B [29] E [33] D [92] C
Fernando Pedrosa Lopes 145

Fernando Pedrosa Lopes

146

Vous aimerez peut-être aussi