Académique Documents
Professionnel Documents
Culture Documents
com
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides - Padres de Projeto. Editora: Bookman Companhia
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
Depois os princpios
Projeto estruturado, Projeto OO
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
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
"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
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
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
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
10
Aumenta o vocabulrio e melhora a comunicao A parte mais difcil de programao dar bons nomes s variveis
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
12
Descrio abstrata de como o padro resolve o problema em questo Descreve os elementos que compem
Avaliar vrias alternativas de padres Entender os custos e desafios Entender os benficios de aplicar o padro
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)
15
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
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
17
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
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.
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.
21
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
23
Famlia de produtos #2
Famlia de produtos #1
Fernando Pedrosa Lopes 24
Fbrica abstrata
Fbricas concretas
Produto abstrato
Produtos concretos
25
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;
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
30
31
Constri as partes
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.
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
34
35
Produto abstrato
Produto concreto
Produto concreto
Factory
36
Que saudao devemos usar, Senhor ou Senhora? Em vez de usar vrios ifs, deixamos para a Fbrica decidir!
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.
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
40
Prottipo abstrato
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.
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
43
44
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
46
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
48
49
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
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.
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
53
54
55
Essas so as classes que o cliente enxerga. Ele quer usar suas funcionalidades, mas a implementao pode variar, como vimos no slide passado.
56
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.
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.
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
60
61
Classe composta
Classe folha
62
Note que, para o cliente, tanto faz manipular uma folha ou uma composio de objetos
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.
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
66
67
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.
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
70
71
Objeto real
Proxy
72
(Min. Comunicaes - CESPE 2008) [99] O padro proxy est corretamente documentado no seguinte diagrama UML.
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
74
75
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.
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
78
79
Objeto Flyweight
Factory de Flyweights
80
A fbrica retorna os Flyweights para o cliente, que os utiliza passando uma configurao de contexto.
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
82
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
85
Estratgias diferentes
Classe de contexto
86
Diferentes variaes de algoritmos, apenas configurando a estratgia, sem a necessidade de estruturas de seleo
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.
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
89
90
Handler genrico
Handlers concretos
Fernando Pedrosa Lopes 91
J1
J2
J3
B1
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.
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
94
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.
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.
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
99
100
101
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?
103
Encapsula uma requisio como um objeto, deixando-o, dessa forma, parametrizar os clientes com diferentes requisies Use o Command para:
104
105
O invoker controla os comandos. Aqui eles so genricos, para ser possvel vari-los mais tarde
106
107
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.
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
110
111
Notificador abstrato
Observador abstrato
112
113
Observador concreto
114
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
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
118
119
Estrutura de objetos
120
Ao percorrer os elementos que o aceitam, o Visitor pode executar operaes diferentes sobre eles
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.
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
123
124
125
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.
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
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
129
130
131
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
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
135
136
137
Executa-se o mesmo template method, que ir executar um bloco fixo de cdigo mais os trechos variveis, definidos em cada classe concreta
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.
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
140
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.
142
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.
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
146