Buscar

Padrões de Projetos Para Software - Questões

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 49 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 49 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 49 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Questões Aula 1 
1 - Os padrões de projeto de software contribuem para a melhoria da qualidade do software 
porque: 
a) Apresentam um modelo genérico de como resolver problemas de modelagem do 
software, aumentando a qualidade dos documentos de software produzidos. 
b) Fornecem exemplos de códigos de programação que podem ser reutilizados. 
c) Fornecem padrões para relacionamento entre os atributos do sistema. 
d) Servem como modelo para testar os softwares desenvolvidos. 
e) Apresentam as boas práticas de programação estruturada que podem ser reutilizadas na 
programação orientada a objetos. 
 
Gabarito: Padrões são as melhores práticas formalizadas utilizadas para resolver problemas 
comuns baseados na reutilização de ideias (não de código). Eles aumentam a qualidade dos 
documentos produzidos, facilitam a manutenção e a reutilização dos programas e tornam mais 
fácil entender os produtos de software que o projeto estiver produzindo. 
 
2 - São características de padrões de projetos de software todas as sentenças a seguir, exceto: 
a) Nome do padrão 
b) Autor do padrão 
c) Problema a ser resolvido 
d) Solução dada pelo padrão 
e) Consequências 
 
Gabarito: O autor do padrão não é uma característica de padrões de projeto. As informações 
sobre o nome do padrão, o problema que ele deve resolver, a solução dada por ele para esse 
problema e as consequências de sua aplicação fazem parte das características de padrões de 
projetos de software. 
 
3 - São vantagens da utilização de padrões de projetos de software as afirmativas a seguir, 
exceto: 
a) Os padrões já foram testados e trazem a experiência e o conhecimento de desenvolvedores 
experientes. 
b) Os padrões podem ser adaptados para diferentes problemas. 
c) Usar padrões pode aumentar o tempo de aprendizado das classes do sistema pelos 
desenvolvedores novatos. 
d) Padrões podem diminuir o retrabalho durante as etapas do projeto de desenvolvimento de 
software. 
e) Padrões contêm um conjunto de expressões padronizadas para expressar soluções complexas 
de forma resumida. 
 
Gabarito: Não há aumento de tempo quando padrões de projetos forem utilizados. O efeito 
pretendido é exatamente o oposto: o uso deles pode diminuir o tempo de aprendizado das classes 
do sistema pelos desenvolvedores novatos. 
 
 
 
4 - Quando surgiram as primeiras ideias sobre o uso de padrões de projeto? 
a) Em 1977, com a publicação do livro A pattern language, por Christopher Alexander. 
b) Em 1987, com o primeiro artigo sobre padrões para projeto de interfaces de software. 
c) Em 1994, com a publicação do Livro Design patterns pela gangue dos quatro. 
d) Em 2005, com a publicação do livro Applying UML and patterns: an introduction to object-
oriented analysis and design and iterative development, que contém o padrão GRASP. 
e) Em 1947, com a publicação do livro Design patterns, por Craig Larman. 
 
Gabarito: Publicada em 1977, a obra de Alexander proporcionou as primeiras ideias sobre os 
benefícios do uso de padrões de projeto. Inicialmente, elas foram apresentadas para uso em 
projetos de arquitetura, mas posteriormente foram expandidas para os projetos de 
desenvolvimento de software. 
 
5 - Identifique qual opção apresenta problemas que podem ser tratados pelos padrões de 
projeto de software. 
a) Problema de comunicação entre as classes e os objetos do sistema. 
b) Problema de criação de objetos e classes dinamicamente em tempo de execução do programa. 
c) Problema de independência do sistema para criar e representar classes e objetos. 
d) Problema de velocidade de execução do sistema. 
e) Problema de definição de tipos de dados (atributos) a serem utilizados no sistema. 
 
Gabarito: Os problemas tratados por padrões de projeto de software referem-se a papéis, 
colaboração e distribuição de classes e objetos. Eles não se referem aos atributos do sistema. 
 
Questões Teste de Conhecimento 1 
1. Por que usar Padrões de Projeto? 
 
 
Os padrões de projeto servem para alcançar objetivos na engenharia de software 
usando implementações ou códigos fontes feitos em linguagens orientadas a objeto. 
 
 
Os padrões de projeto não nos servem para alcançar objetivos na engenharia de 
software usando classes e métodos em linguagens orientadas a objeto. 
 
 
Os padrões de projeto não servem para alcançar objetivos diversos na engenharia e 
se utilização de linguagens orientadas a objeto. 
 
 
Os padrões de projeto servem para alcançar objetivos na engenharia de software 
usando classes e métodos em linguagens orientadas a objeto. 
 
 
Os padrões de projeto servem para alcançar objetivos na engenharia de software 
usando procedures e funções em linguagens de programação. 
 
 
Explicação: 
Padrões de projeto são voltados para problemas recorrentes que ocorrem no nosso dia-a-dia. 
São descrições de objetos que se comunicam e classes que são customizadas para resolver 
um problema genérico de design em um contexto específico. 
 
2. O modelo GoF (Gang of Four) são padrões de projeto de software com 23 modelos (ou 
soluções) de soluções para o desenvolvimento de algoritmos baseados no paradigma orientado a 
objetos. Esses modelos são classificados em subcategorias com propósitos comuns. Sabendo 
disso, assinale apenas uma das opções abaixo que é uma afirmativa verdadeira sobre os padrões 
GoF: 
 
 
Os modelos dos padrões GoF são agrupados em três categorias, sendo-as: Padrões 
de Criação, Padrões Estruturais e Padrões Comportamentais. 
 
 
Os modelos dos padrões GoF são agrupados em duas categorias, sendo-as: Padrões 
Estruturais e Padrões Comportamentais. 
 
 
Os modelos dos padrões GoF são agrupados em quatros categorias, sendo-as: 
Padrões de Criação, Padrões Estruturais, Padrões Organizacionais e Padrões 
Comportamentais. 
 
 
Os modelos dos padrões GoF são agrupados em duas categorias, sendo-as: Padrões 
de Criação e Padrões Comportamentais. 
 
 
Os modelos dos padrões GoF são agrupados em três categorias, sendo-as: Padrões 
de Criação, Padrões Estruturais e Padrões Organizacionais. 
 
3. (FESMIP-BA - 2011) Segundo a classificação de Design Patterns apresentada pela GoF, 
identifique com V os padrões comportamentais e com F, os demais. 
 
( ) Observer. 
( ) Iterator. 
( ) Façade. 
( ) Composite. 
( ) Visitor. 
 
A alternativa que contém a sequência correta, de cima para baixo, é a 
 
V F F V F 
 
 
V V F F V 
 
F V V V F 
 
V V V V V 
 
F F V V V 
 
 
4. Considere a afirmativa de Gamma e Al. citada abaixo e escolha a opção correta: ¿ Em geral, 
todas as arquiteturas orientadas a objeto bem-estruturadas estão cheias de padrões. Uma das 
maneiras de medir a qualidade de um sistema orientado a objetos é avaliar se os colaboradores 
tomaram bastante cuidado com as colaborações comuns entre seus objetos. Focalizar em tais 
mecanismos durante o desenvolvimento de um sistema pode levar a uma arquitetura menor, mais 
simples, muito mais compreensível do que aquelas produzidas quanto padrões são ignorados.¿ 
 
 
Padrões são boas práticas e proporcionam garantia de qualidade na elaboração do 
código. 
 
Padrões são de uso obrigatório e eliminam os erros cometidos na fase programação. 
 
 
Padrões sempre levam a uma arquitetura menor principalmente quando se usa 
tecnologia de objetos 
 
 
Padrões causam falta de criatividade nos desenvolvedores e esta perda compromete 
a qualidade. 
 
Padrões é uma forma obrigatória de programar com objetos 
 
Explicação: 
Existem algumas definições de vários autores. Sobre padrões de software, a definição de 
Gamma contempla: "Os padrões de projeto são descrições de objetos que se comunicam e 
classes que são customizadas para resolver um problema genérico de design em um 
contexto específico",e os classifica por propósito e por escopo. 
 
 
5. Qual o objetivo dos Padrões Comportamentais? Assinale a opção CORRETA. 
 
 
Fornecem um guia de como instanciar objetos. 
 
Mostram como estruturar e encapsular essas decisões. 
 
 
O objetivo dos Padrões Comportamentais têm a ver com a maneira pela qual 
responsabilidades são distribuídas a classes e objetos durante a realização de uma 
tarefa. 
 
Definem a quais objetos delegar responsabilidade. 
 
Envolve decisões dinâmicas para escolher qual classe instanciar. 
 
Explicação: 
Essa afirmativa está CORRETA porque as outras se referem a Padrões de Criação. 
 
6. (Casa da Moeda - CESGRANRIO 2009) Em determinado sistema de análise estatística, é 
necessário definir uma dependência ¿um para muitos¿ entre objetos, de forma que quando um 
objeto mudar de estado, todos os seus dependentes sejam notificados e atualizados. Que padrão 
de projeto pode ser utilizado nessa situação? 
 
 
Observer 
 
Singleton 
 
JSON 
 
Memento 
 
AJAX 
 
7. Podemos afirmar que os Padrões Estruturais da família GoF: 
 
 
Colocam em dúvida o tratamento dispensado aos usuários na fase de levantamento 
das necessidades. 
 
 
Fornecem um guia de como instanciar objetos, que normalmente envolve decisões 
dinâmicas para escolher, por exemplo, qual classe instanciar ou a quais objetos 
delegar responsabilidade. 
 
São projetados para organizar, gerenciar e combinar diferentes comportamentos. 
 
 
Aumentam a responsabilidade do programador em depurar o código e as rotinas 
necessárias à documentação dos processos. 
 
 
Definem caminhos comuns para a organização de diferentes tipos de objetos, 
facilitando sua integração e colaboração mútua. 
Explicação: 
Há três grupos de padrões GoF: Padrões de Criação, Padrões Estruturais e Padrões 
Comportamentais. 
Os padrões de estruturais GoF contemplam 7 (sete) tipos de padrões: Adapter, Bridge, 
Composite, Decorator, Façade, Flyweight e Proxy. 
O objetivo dos Padrões Estruturais é definir caminhos comuns para a organização de 
diferentes tipos de objetos, facilitando sua integração e colaboração mutua. 
Tratam da composição de classes e objetos para formar estruturas complexas. 
São associados à maneira como classes e objetos são organizados estruturalmente. 
E oferecem formas efetivas para usar conceitos OO como herança e composição. 
 
8. Uma das categoria que tradicionalmente se classificam os padrões de projeto :Padrões 
Estruturais cujo objetivo é: 
 
 
Define como implantar o mecanismo de herança em um grupo de objetos 
 
 
Define a forma de organização dos objetos e sua colaboração mutua 
 
Define como implantar um novo método em uma classe. 
 
Define formas de gerencia e combinar diferentes comportamentos. 
 
Defende formas de instanciar objetos delegando responsabilidades 
 
Explicação: 
A família de padrões GoF, está divida em três grupos principais de padrões: Padrões de 
Criação, Padrões Estruturais e Padrões Comportamentais. 
O objetivo dos Padrões Estruturais é definir caminhos comuns para a organização de 
diferentes tipos de objetos, facilitando sua integração e colaboração mutua. 
 
Questões Aula 2 
 
1 - No padrão Builder, existe uma interface comum para todos os objetos que constroem outros 
objetos. Qual é o nome desta interface? 
a) Builder 
b) Director 
c) Concrete Builder 
d) Product 
e) Abstract Builder 
 
Gabarito: A classe Builder especifica uma interface para um construtor de partes do objeto-
produto. 
 
2 - Uma equipe de projeto está desenvolvendo um aplicativo para smartfone com um amplo 
conjunto de funções que deve funcionar nas plataformas IOS e Android. Qual o padrão de 
projeto mais adequado para ser utilizado? 
a) O padrão Builder, porque ele facilita a construção de sistemas complexos. 
b) O padrão Abstract Factory, porque ele produz uma hierarquia de classes que encapsula 
muitas plataformas. 
c) O padrão Factory Method, porque ele padroniza o modelo de arquitetura para um conjunto de 
aplicativos diferentes. 
d) O padrão Abstract Factory, porque ele utiliza muitas instruções #ifdef para várias plataformas de 
hardware e software. 
e) O padrão Factory Method, porque ele permite que aplicativos individuais definam os próprios 
objetos de domínio e forneçam sua instanciação. 
 
Gabarito: O padrão Abstract Factory é o mais indicado quando houver a necessidade de garantir 
alta portabilidade do sistema entre diversas plataformas. 
 
3 - Qual é o relacionamento entre os padrões Abstract Factory e Factory Method? 
a) O padrão Abstract Factory é mais simples que o Factory Method. 
b) A desvantagem do Factory Method em relação ao Abstract Factory é que ele pode retornar a 
mesma instância várias vezes. 
c) Factory Method atua sobre o escopo de classes, enquanto Abstract Factory o faz sobre o de 
classes. 
d) As classes Abstract Factory podem ser implementadas com Factory Methods. 
e) As classes Factory Methods podem ser implementadas com Abstract Factory. 
 
Gabarito: As classes Abstract Factory são frequentemente implementadas com Factory Methods, 
mas podem ser implementadas usando Prototype. 
 
Questões Teste de Conhecimento 2 
 
 
1. O padrão Singleton é um Padrão de Criação GoF. Com relação aos seus objetivos podemos 
afirmar que: 
I- O padrão de projeto Singleton declara um método chamado clone na superclasse abstrata do 
modelo. 
II- O padrão Singleton está direcionado para as situações onde precisamos manter uma única 
instancia de uma classe durante toda a execução da aplicação. 
III- O padrão Singleton é bastante útil para guardar o estado de um objeto em determinados 
momentos. 
Est(á)ão correta(s) a(s) afirmativa(s): 
 
 
Somente o item I; 
 
 
Somente os itens I e III; 
 
 
Somente os itens II e III; 
 
 
Somente os itens I e II; 
 
Somente o item II; 
Explicação: 
Os itens I e III estão errados porque eles se referem ao padrão Prototype. 
 
2. (CESGRANRIO - 2009) Por motivo de segurança, deseja-se adicionar registro (log) das 
operações efetuadas no sistema de contabilidade de uma empresa. O arquiteto do sistema decide 
que deve existir somente uma instância de uma classe de registro (log) e que esta será o ponto 
de acesso global para os demais componentes do sistema. 
 
Que padrão de projeto pode ser utilizado nesse caso? 
 
Singleton. 
 
 
Bridge. 
 
 
Iterator. 
 
 
Memento. 
 
 
Visitor. 
3. 
i) Decorator permite anexar responsabilidades adicionais a um objeto dinamicamente. 
ii) Builder desacopla uma abstração de sua implementação para que os dois possam variar 
independentemente. 
iii) Mediator fornece um substituto ou ponto através do qual um objeto possa controlar o acesso a 
outro. 
Em relação aos itens acima está correto: 
 
 
somente a ii e iii 
 
 
somente a i 
 
somente a ii 
 
somente a iii 
 
somente a i e ii 
 
Explicação: 
O item II está errado porque o padrão BUILDER é um Padrão de Criação. É um padrão cuja 
responsabilidade é a CONSTRUÇÃO 
Tentam minimizar a carga que os desenvolvedores têm ao ato de criar objetos dentro de um 
construtor. Isso é comum em desenvolvedores iniciantes. 
O item III está errado porque o padrão Mediator é um padrão define um objeto que 
encapsula a forma como um conjunto de objetos interage, promovendo o acoplamento fraco 
ao evitar que os objetos se refiram uns aos outros explicitamente, permitindo variar suas 
interações independentemente. 
4. 
 
 
O padrão Singleton é um Padrão de Criação GoF. A estrutura desse padrão utiliza alguns 
recursos. Assinale o único recurso que NÃO pertence a esse padrão. 
 
 
Modificar static para implementaro método getInstance e, assim, retornar a instancia 
apropriada ou criá-la, caso seja a primeira vez; 
 
 
Modificadores static e private para garantir uma mesma instância para todos os 
objetos criados e evitar acesso público; 
 
 
Modificando as aplicações para este padrão de projeto para que a facilidade de 
instanciar classes em tempo de execução possa acontecer; 
 
 
Construtor da classe privado, para não permitir a instância de novos objetos da 
classe; 
 
 
Declarar o método getInstance como synchronized para que o método seja 
executado por uma thread por vez, quando utilizado em programas multi-thread; 
 
Explicação: 
Esta afirmativa NÃO pertence ao padrão Singleton, porque está relacionada ao padrão 
Prototype. 
 
 
5. Consideram as afirmativa abaixo sobre o padrão protype I - Declara um método chamado clone 
na superclasse abstrata do modelo (Prototype). Em função desta declaração, cada classe 
concreta derivada deve ser capaz de gerar uma nova instância de si próprio. II - , Entre as 
aplicações para este padrão de projeto está a facilidade de instanciar classes em tempo de 
execução. III Quando as instancias de uma classe apresentam poucas combinações de estados, 
pode ser mais conveniente definir previamente um conjunto de protótipos e cloná-los, sempre que 
foi necessário. 
 
As afirmativas I, III, estão corretas e II errada 
 
As afirmativas I, II, estão corretas e a afirmativa III está errada. 
 
 
As afirmativas estão todas corretas 
 
As afirmativas I, II, III estão incorretas 
 
As afirmativas II, III estão corretas e a afirmativa I está errada. 
 
Explicação: 
Há cinco padrões de criação GoF: Abstract Factory, Builder, Factory Method, Prototype e 
Singleton. 
O PROTOTYPE é um Padrão de Criação. É um padrão cuja responsabilidade é a 
CONSTRUÇÃO 
Ele especifica os tipos de objetos a serem criados usando uma instância como protótipo e 
criar novos objetos ao copiar este protótipo. 
A estrutura do Prototype cria um objeto novo, mas aproveitar o estado previamente existente 
em outro objeto. 
Conforme Gamma et al, 2000, Prototyoe especifica os tipos de objetos a serem criados 
usando uma instância-protótipo e cria novos objetos pela cópia desse protótipo. 
 
6. Qual dos padrões GOF abaixo é mais indicado quando necessitamos criar objetos de uma 
determinada classe, os quais só têm alguns poucos estados possíveis e é melhor copiá-los e 
aproveitar o seu estado atual do que criar um novo objeto no estado inicial. 
 
 
Singleton 
 
 
Builder 
 
 
Decorator 
 
 
Abstract Factory 
 
Prototype 
7. Conhecido como padrões da gangue dos quatro, por terem sido desenvolvidos por quatro 
autores, os Padrões GoF (Group of Four) estão divididos pelos seguintes famílias de padrões: 
Padrões de Criação ou de Construção, Padrões Estruturais e Padrões Comportamentais. 
 
Considerando os padrões de Criação ou de Construção, analise o modelo abaixo e em seguida 
marque a alternativa que define a representação. 
 
 
FACTORY METHOD. 
 
MEDIATOR. 
 
SINGLETON. 
 
FACADE. 
 
 
BUILDER. 
 
Explicação: 
Há cinco padrões de criação GoF: Abstract Factory, Builder, Factory Method, Prototype e 
Singleton. 
O BUILDER é um Padrão de Criação. É um padrão cuja responsabilidade é a 
CONSTRUÇÃO 
Tentam minimizar a carga que os desenvolvedores têm ao ato de criar objetos dentro de um 
construtor. Isso é comum em desenvolvedores iniciantes. 
 
8. 
 
 
Conhecido como padrões da gangue dos quatro, por terem sido desenvolvidos por quatro 
autores, os Padrões GoF (Group of Four) estão divididos pelos seguintes famílias de 
padrões: Padrões de Criação ou de Construção, Padrões Estruturais e Padrões 
Comportamentais. 
 
Considerando os padrões de Criação ou de Construção, analise o modelo abaixo e em 
seguida marque a alternativa que define a representação. 
 
BUILDER. 
 
SINGLETON. 
 
 
PROTOTYPE. 
 
FACTORY METHOD. 
 
MEDIATOR. 
 
 
 
Explicação: 
Há três grupos de padrões GoF: Padrões de Criação, Padrões Estruturais e Padrões 
Comportamentais: 
Os padrões de criação GoF contemplam 5 (cinco) tipos de padrões: Abstract Factory, Builder, 
Factory Method, Prototype e Singleton. 
Os Padrões de Criação fornecem um guia de como instanciar objetos. Esta ação 
normalmente envolve decisões dinâmicas para escolher, por exemplo, qual classe instanciar 
ou a quais objetos delegar responsabilidade. Esse padrão nos mostra como estruturar e 
encapsular essas decisões 
O padrão Prototype por definição ¿Especifica os tipos de objetos a serem criados usando 
uma instância como protótipo e criar novos objetos ao copiar este protótipo¿. Declara um 
método chamado clone na superclasse abstrata do modelo (Prototype). 
 
Questões Aula 3 
 
1 - Qual padrão de projeto não é adequado para uso quando o processo de criação de objetos 
for muito trabalhoso, havendo a necessidade da criação de várias instâncias de objetos 
complexos? Além disso, o projetista desse sistema deseja a diminuição do retrabalho na 
criação de novos objetos, querendo utilizar um padrão semelhante ao Prototype. 
a) O padrão Builder. 
b) O padrão Singleton. 
c) O padrão Factory Method. 
d) T?odas os padrões são inadequados. 
e) Todas os padrões são adequados. 
Gabarito: O padrão Singleton não é indicado quando houver a necessidade de trabalhar com 
múltiplas instâncias de um objeto. 
 
 
2 - Com o padrão Singleton, resolvemos qual problema de projeto? 
a) Garantia de que um objeto Singleton poderá possuir diversas instâncias no sistema. 
b) Garantia de flexibilidade nos relacionamentos entre as classes do sistema. 
c) Garantia de separação entre as classes de abstração e implementação. 
d) Garantia de que existe apenas uma instância do objeto Singleton no sistema inteiro. 
e) Garantia de facilidade na criação de objetos complexos. 
 
Gabarito: Singleton garante que exista apenas um objeto no sistema, independentemente de 
quantas requisições a classe receber para criá-lo. 
 
 
3 - Qual das opções seguintes é um ponto positivo do padrão Bridge? 
a) A separação entre a abstração e a implementação de uma classe. 
b) O controle da criação de instâncias de um objeto. 
c) A possibilidade de trabalhar apenas com uma única hierarquia de classes. 
d) A facilitação de criação de instâncias-protótipos de uma classe. 
e) A garantia de que apenas um determinado objeto vai existir durante a execução do sistema. 
 
Gabarito: O padrão Bridge é utilizado quando quisermos separar uma abstração de sua 
implementação para que as duas possam variar de forma independente. 
 
 
Questões Teste de Conhecimento 3 
 
1. Qual o nome do padrão de projeto que pode ser utilizado para permitir que uma hierarquia de 
abstrações e suas diferentes implementações possam variar independentemente? 
 
 
Proxy 
 
 
Façade 
 
 
Flyweight 
 
 
Adapter 
 
Bridge 
2. O padrão Adpater é bastante utilizado para compatibilizar classes implementas por 
programadores diferentes, ou desenvolvidas em momentos diferentes, ou ainda para unir classes 
com interfaces diferentes em uma estrututura hierarquica única, sem precisar implementar 
novamente todas as funcionalidades e interfaces da classe já existente, considere as afirmativas: I 
- A idéia é criar uma nova classe (Adapter) com a interface padrão que se deseja para fazer a 
conexão com a classe já existente (Adaptee) com interface diferente da estrutura de classes que 
se pretende utilizar no sistema. Ii - Além de reaproveitar totalmente a classe antiga sem precisar 
alterar o código e entender a complexa implementação realizada, mantém a uniformidade do seu 
projeto original. Iii cria uma hierarquia de classes diferentescategorias de objetos sem relação de 
herança. 
 
 
As afirmativas I, II, estão corretas e a afirmativa III está errada. 
 
As afirmativas I, II, III estão incorretas 
 
As afirmativas II, III estão corretas e a afirmativa I está errada. 
 
As afirmativas I, III, estão corretas e II errada 
 
As afirmativas estão todas corretas 
 
Explicação: 
O conceito do Adapter é converter a interface de uma classe em outra interface esperada 
pelos clientes. Adapter permite a comunicação entre classes que não poderiam trabalhar 
juntas devido à incompatibilidade de suas interfaces. 
A ideia é fazer adaptação entre dois recursos. 
Devemos usar sempre que for necessário adaptar uma interface para um cliente 
Vejamos o exemplo da tomada. O plug é três pinos, e a tomada é de dois pinos, então eu 
tenho que ter uma classe adaptadora. 
 
 
3. Dentre as opções apresentadas assinale qual o padrão é bastante utilizado para compatibilizar 
classes implementas por programadores diferentes, ou desenvolvidas em momentos diferentes, 
ou ainda para unir classes com interfaces diferentes em uma estrutura hierárquica única, sem 
precisar implementar novamente todas as funcionalidades e interfaces da classe já existente. 
 
 
Padrão Adapter 
 
Padrão Composite 
 
Padrão Decorator 
 
Padrão Decorator 
 
Padrão Flyweight 
 
 
4. Os padrões estruturais correspondem a: 
 
Abstract Factory, Builde, Factory Method, Prototype e Singleton. 
 
Chain of Responsability, command, Interpreter, Decorator, Façade, flyweight 
 
 
Chain of Responsability, command, Interpreter, Iterador, Mediator, Memento, 
Observer, State, Strategy, Template Method e Visitor. 
 
 
Adapter, Bridge, Composite, Decorator, Façade, Flyweight e Proxy. 
 
Todas as alternativas estão erradas 
 
Explicação: 
Os Padrões Estruturais GoF contemplam 7 (sete) tipos de padrões: Adapter, Bridge, 
Composite, Decorator, Façade, Flyweight e Proxy. 
Definem caminhos comuns para a organização de diferentes tipos de objetos, facilitando sua 
integração e colaboração mutua. 
Os Padrões Estruturais tratam da composição de classes e objetos para formar estruturas 
complexas; associados à maneira como classes e objetos são organizados estruturalmente; 
oferecem formas efetivas para usar conceitos OO como herança e composição, e são 
abstrações de aspectos estruturais. 
O objetivo dos Padrões Estruturais é definir caminhos comuns para a organização de 
diferentes tipos de objetos, facilitando sua integração e colaboração mutua. 
 
 
5. O padrão Composite é um Padrão Estrutural GoF. Com relação aos seus objetivos podemos 
afirmar que: 
I- O padrão de projeto Composite permite anexar responsabilidades adicionais a um objeto (em 
caráter dinâmico) dinamicamente. 
II- O padrão Composite permite que seja encapsulado os detalhes (como se eu falasse com um 
aluno ou com vários alunos da mesma forma), o que permite uma programação muito mais leve. 
III- O padrão Composite permite que clientes tratem objetos individuais e composições de objetos 
de maneira uniforme. 
Est(á)ão correta(s) a(s) afirmativa(s): 
 
 
Somente os itens II e III; 
 
Somente o item II; 
 
Somente os itens I e III; 
 
Somente o item I; 
 
Somente os itens I e II; 
 
Explicação: 
O item I está errado porque ela se refere ao padrão Decorator. 
 
 
6. Imagine que você está desenvolvendo um sistema para um bar especializado em coquetéis, 
onde existem vários tipos de coquetéis que devem ser cadastrados para controlar a venda. Os 
coquetéis são feitos da combinação de uma bebida base e vários outros adicionais que compõe a 
bebida. Por exemplo: 
Conjunto de bebidas: 
• Cachaça 
• Rum 
• Vodka 
• Tequila 
Conjunto de adicionais: 
• Limão 
• Refrigerante 
• Suco 
• Leite condensado 
• Gelo 
• Açúcar 
Então, como possíveis coquetéis temos: 
• Vodka + Suco + Gelo + Açúcar 
• Tequila + Limão + Sal 
• Cachaça + Leite Condensado + Açúcar + Gelo 
Qual padrão você usaria para representar a estrutura acima? 
 
Façade 
 
State 
 
 
Decorator 
 
Strategy 
 
Observer 
 
Explicação: 
O padrão Decorator é um padrão de cuja intenção são as Extenções.
O padrão Decorator anexa responsabilidades adicionais a
dinamicamente. Decorators oferecem uma alternativa flexível ao uso de herança para 
estender uma funcionalidade (para a extensão de funcionalidade).
 
 
7. Qual padrão estrutural permite que um objeto utilize serviços de outros objetos com interfaces 
diferentes por meio de uma interface única:
 
Bridge 
 
Facade 
 
Composite 
 
Flyweight 
 
 
Adapter 
 
 
8. Observe a figura abaixo e escolha dentre as opções o padrão GOF para resolver o problema 
com a estrutura apresentada.
 
Chain of Responsability
 
Observer 
 
GRASP 
é um padrão de cuja intenção são as Extenções. 
O padrão Decorator anexa responsabilidades adicionais a um objeto (em caráter dinâmico) 
dinamicamente. Decorators oferecem uma alternativa flexível ao uso de herança para 
estender uma funcionalidade (para a extensão de funcionalidade). 
Qual padrão estrutural permite que um objeto utilize serviços de outros objetos com interfaces 
diferentes por meio de uma interface única: 
 
ra abaixo e escolha dentre as opções o padrão GOF para resolver o problema 
com a estrutura apresentada. 
Chain of Responsability 
um objeto (em caráter dinâmico) 
dinamicamente. Decorators oferecem uma alternativa flexível ao uso de herança para 
Qual padrão estrutural permite que um objeto utilize serviços de outros objetos com interfaces 
ra abaixo e escolha dentre as opções o padrão GOF para resolver o problema 
 
 
 
Composite 
 
JEE 
 
Questões Aula 4 
 
1. Qual objetivo do padrão Adapter? 
a) Permitir a composição de objetos em estruturas de árvore. 
b) Adicionar responsabilidades a um objeto dinamicamente. 
c) Viabilizar o reuso de aplicativos de prateleira. 
d) Criar objetos a partir da cópia do comportamento de um objeto protótipo. 
e) Garantir que apenas um objeto exista no sistema, independentemente de quantas requisições a 
classe receba para criá-lo. 
 
Gabarito: O Adapter trabalha para prover compatibilidade entre interfaces, possibilitando o reuso 
de componentes já desenvolvidos em projetos novos. 
 
2. Qual o padrão mais adequado para uso quando é necessário manipular coleção hierárquica 
de objetos de forma uniforme? 
a) Singleton 
b) Adapter 
c) Bridge 
d) Composite 
e) Facade 
 
Gabarito: O padrão Composite permite a composição de objetos em estruturas de árvore para 
representar hierarquias parte-todo. Com o uso deste padrão, clientes podem tratar objetos 
individuais ou composições de objetos de maneira uniforme. 
 
3. O padrão ______ adiciona responsabilidades ______ a objetos, fornecendo uma alternativa 
ao uso de _____ para estender funcionalidades. 
a) Decorator, dinâmicas, herança. 
b) Bridge, estáticas, polimorfismo. 
c) Adapter, dinâmicas, herança. 
d) Decorator, dinâmicas, interfaces. 
e) Composite, dinâmicas, classes abstratas. 
 
Gabarito: O Decorator tem a função de adicionar dinamicamente alterações no comportamento 
dos objetos. Para isso, ele utiliza composição em vez de herança. 
 
 
Questões Teste de Conhecimento 4 
1. Uma empresa tem, dentre outros, um sistema de vendas e outro de controle de estoque. 
Supondo que o sistema de vendas necessita utilizar funcionalidades do sistema de controle de 
estoque, qual padrão deve ser utilizado para que estas funcionalidades sejam disponibilizadas? 
 
Decorator 
 
Observer 
 
Singleton 
 
 
Fachada 
 
Fábrica Abstrata 
 
Explicação: 
Os Padrões Estruturais GoF contemplam 7(sete) tipos de padrões: Adapter, Bridge, 
Composite, Decorator, Façade, Flyweight e Proxy. 
Definem caminhos comuns para a organização de diferentes tipos de objetos, facilitando sua 
integração e colaboração mutua. 
O padrão Façade (fachada) é um padrão Fachada, ou seja, faz uma fachada única para 
todas as fachadas, ou seja, Fornece uma interface unificada para um conjunto de objetos que 
constituem um subsistema.define uma interface a um nível mais elevado, para tornar um 
subsistema mais fácil de usar. 
Oferece uma interface única para um conjunto de interfaces de um subsistema. Façade 
define uma interface de nível mais elevado que torna o subsistema mais fácil de usar. 
 
 
2. O Padrão Flyweight é um objeto compartilhado, que pode ser usado em vários contextos, 
simultaneamente, pois, tem capacidade de funcionar de forma independente em cada contexto. 
Seus métodos e implementações não podem, em momento algum, fazer 
_____________________________________________________________ 
 
hipóteses ou asserções sobre fora do contexto no qual o objeto opera. 
 
hipóteses ou exclusões sobre o contexto no qual o objeto opera. 
 
 
hipóteses ou asserções sobre o contexto no qual o objeto opera. 
 
comparações ou associações sobre o contexto no qual o objeto opera. 
 
Acoplamento fraco entre o subsistema e seus clientes. 
 
 
3. A classe Façade, em qualquer contexto, tem como objetivo mais amplo buscar respostas para 
um problema de forma transparente em um conjunto de subsistemas e fornecer uma resposta 
imediata para a classe cliente. Assinale dentre as principais vantagens desse padrão de projeto a 
única que não é verdadeira.: 
 
 
Incentivar acoplamento forte entre o subsistema e seus clientes. 
 
 
Simplificar o acesso a determinadas funcionalidades de um subsistema, sem 
inviabilizar sua utilização direta. 
 
Incentivar acoplamento fraco entre o subsistema e seus clientes. 
 
judar a melhorar portabilidade dos sistemas. 
 
 
Tornar os clientes independentes da complexidade dos diferentes subsistemas de 
uma aplicação. 
 
 
 
 
4. Qual padrão usa compartilhamento para suportar eficientemente grandes quantidades de 
objetos de granularidade fina? 
 
Façade. 
 
Nenhuma das anteriores. 
 
Bridge. 
 
Composite. 
 
 
Flyweight. 
 
Explicação: 
Os Padrões Estruturais GoF contemplam 7 (sete) tipos de padrões: Adapter, Bridge, 
Composite, Decorator, Façade, Flyweight e Proxy. 
Flyweight é um padrão de projeto de software apropriado quando vários objetos devem ser 
manipulados em memória sendo que muitos deles possuem informações repetidas. Dado que 
o recurso de memória é limitado, é possível segregar a informação repetida em um objeto 
adicional que atenda as características de imutabilidade e comparabilidade (que consiga ser 
comparado com outro objeto para determinar se ambos carregam a mesma informação). 
 
 
5. Qual a vantagem do padrão Proxyr? Assinale a opção INCORRETA. 
 
 
Consigo atribuir um certo grau de inteligência, o que possibilitaria um tratamento 
inteligente dos dados; 
 
 
Permite, sempre que for desejável, criar uma interface para um conjunto de objetos 
com o objetivo de facilitar o uso da aplicação; 
 
Permite maior eficiência com caching no cliente; 
 
 
Tem transparência, ou seja, mesma sintaxe usada na comunicação entre o cliente e 
sujeito real é usada no proxy; 
 
Permite o tratamento inteligente dos dados no cliente; 
 
Explicação: 
Essa afirmativa está incorreta, porque ela se refere ao padrão Façade. 
 
 
6. Que padrão estrutural provê um ponto de atendimento para que outro objeto possa controlar o 
acesso ao primeiro: 
 
 
 
Proxy 
 
Facade 
 
Flyweight 
 
Adapter 
 
Decorator 
 
 
7. O padrão Flyweight é um Padrão Estrutural GoF. Quando não devemos usar esse padrão? 
I- Quando o estado dos objetos não for imutável 
II- Quando o tamanho do conjunto de objetos for significativamente menor que a quantidade de 
vezes em que eles são usados na aplicação; 
III- Quando objetos podem ser usados em diferentes contextos ao mesmo tempo (agindo sempre 
como um objeto independente); 
Est(á)ão correta(s) a(s) afirmativa(s): 
 
Somente o item II; 
 
Somente os itens II e III; 
 
 
Somente o item I; 
 
Somente os itens I e II; 
 
Somente os itens I e III; 
 
Explicação: 
Os itens II e III estão errados porque é nesta situação que devemos usar esse padrão. 
No item I é preciso passar o estado mutável como parâmetro e isto pode ser impraticável se o 
estado consistir de vários objetos. 
 
 
8. Qual padrão de projeto tem como propósito prover interface unificada para conjunto de 
interfaces em um subsistema, definindo uma interface de alto-nível. 
 
Singleton 
 
Factory Method 
 
Decorator 
 
Strategy 
 
 
Facade 
 
Explicação: O Padrão Façade é do tipo estrutural . É usado quando um sistema é muito 
complexo ou difícil de entender, já que possui um grande número de classes independentes 
ou se trechos de código fonte estão indisponíveis. Este padrão esconde as complexidades de 
um sistema maior e provê uma interface simplificada ao cliente. Tipicamente envolve uma 
única classe responsável por englobar uma série de membros requeridos pelo cliente. Estes 
membros acessam o sistema em nome do Façade e escondem os detalhes de 
implementação. 
 
 
Questões Aula 5 
1. A equipe de desenvolvimento de um sistema de folha de pagamento está enfrentando 
problemas para modelar o sistema porque existe uma infinidade de objetos no sistema antigo 
que devem ser integrados ao novo. Qual padrão poderia ser utilizado para a equipe nessa 
situação? 
a) O padrão Facade, pois ele reduz a complexidade de conexão e o uso de partes 
preexistentes de um sistema. 
b) O padrão Bridge, que pode fornecer uma interface para servir de ponte entre o sistema novo e 
o antigo. 
c) O padrão Prototype, porque ele permite criar instâncias novas copiando um objeto protótipo 
como modelo. 
d) O padrão Facade, pois ele garante que apenas um objeto existe no sistema, 
independentemente de quantas requisições a classe recebe para criá-lo. 
e) O padrão Bridge, que pode criar múltiplas interfaces para reduzir a complexidade das conexões 
entre os objetos. 
 
Gabarito:letra a. Um dos principais benefícios do Facade é proporcionar a redução da 
complexidade de uso da interface de um componente complexo ou de um sistema por meio do 
uso de interfaces que encapsulam a complexidade dos demais objetos existentes. 
 
2. Em todas as situações descritas a seguir é recomendável o uso do padrão 
Flyweight, exceto: 
a) Quando grupos de objetos puderem ser substituídos por poucos objetos compartilhados. 
b) Quando os custos de alocação dos objetos na memória forem altos por causa da grande 
quantidade de objetos existente no sistema. 
c) Quando uma aplicação utilizar uma pequena quantidade de objetos. 
d) Quando o sistema não precisar conhecer a identidade dos objetos. 
e) Quando o sistema contiver uma grande quantidade de objetos de pequena funcionalidade. 
 
Gabarito: É recomendado o uso do padrão Flyweight para sistemas que possuem grande 
quantidade de objetos de pequena funcionalidade. 
 
3. O padrão Proxy implementa a interface ______. Nesse caso, o sistema passa a utilizar o 
objeto ______ no lugar do ________ de forma transparente para o ______. 
a) Objeto, Proxy, Objeto Real, Cliente. 
b) Ponte, Proxy, Objeto, Cliente. 
c) Fachada, Objeto, Proxy, Cliente. 
d) Decoração, Cliente, Proxy, Objeto Real. 
e) Proxy, Objeto, Real, Proxy, Cliente. 
 
Gabarito: O padrão Proxy implementa a interface Objeto (Subject). Nesse caso, o sistema passa a 
utilizar o objeto Proxy (como interface)no lugar do Objeto Real (RealSubject) de forma 
transparente para o Cliente. 
 
4. Qual objetivo do padrão Adapter? 
a) Permitir a composição de objetos em estruturas de árvore. 
b) Adicionar responsabilidades a um objeto dinamicamente. 
c) Viabilizar o reuso de aplicativos de prateleira. 
d) Criar objetos a partir da cópia do comportamento de um objeto protótipo. 
e) Garantir que apenas um objeto exista no sistema, independentemente de quantas requisições a 
classe receba para criá-lo. 
 
Gabarito: O Adapter trabalha para prover compatibilidade entre interfaces, possibilitando o reuso 
de componentes já desenvolvidos em projetos novos. 
 
2. Qual o padrão mais adequado para uso quando é necessário manipular coleção hierárquica 
de objetos de forma uniforme? 
a) Singleton 
b) Adapter 
c) Bridge 
d) Composite 
e) Facade 
 
Gabarito: O padrão Composite permite a composição de objetos em estruturas de árvore para 
representar hierarquias parte-todo. Com o uso deste padrão, clientes podem tratar objetos 
individuais ou composições de objetos de maneira uniforme. 
 
 
3. O padrão ______ adiciona responsabilidades ______ a objetos, fornecendo uma alternativa 
ao uso de _____ para estender funcionalidades. 
a) Decorator, dinâmicas, herança. 
b) Bridge, estáticas, polimorfismo. 
c) Adapter, dinâmicas, herança. 
d) Decorator, dinâmicas, interfaces. 
e) Composite, dinâmicas, classes abstratas. 
 
Gabarito: O Decorator tem a função de adicionar dinamicamente alterações no comportamento 
dos objetos. Para isso, ele utiliza composição em vez de herança. 
 
 
Questões Teste de Conhecimento 5 
 
1. A implementação do padrão de projeto Chain of Responsability requer que cada objeto receptor 
de uma determinada solicitação tenha uma lógica para descrever os tipos de solicitação que é 
capaz de processar e como passar adiante aquelas que requeiram processamento por outros 
receptores. A delegação das solicitações pode formar uma árvore de recursão, com um 
mecanismo especial para inserção de novos receptores no final da cadeia existente. 
 
Marque a alternativa que NÃO identifica uma vantagem do padrão de projeto Chain of 
Responsability. 
 
 
As partes invariantes, conforme a situação, contexto ou problema a ser resolvido, 
podem ser redefinidas em classes abstratas gerando interconexão entre os objetos. 
 
 
Reduz a interconexão entre os objetos, ao invés de um objeto manter uma lista com 
todos os receptores candidatos, eles mantém uma referência única para o sucessor; 
 
 
Flexibilidade na atribuição de responsabilidades, ou seja, pode-se mudar a cadeia de 
objetos em tempo de execução, adicionando ou removendo objetos. 
 
 
Padrão libera um objeto de ter que conhecer qual o outro objeto que trata de uma 
solicitação. 
 
Remetente e receptor não têm conhecimento explícito um do outro. 
 
 
 
 
2. A classe Handler é uma classe abstrata, portanto, não pode ser instanciada diretamente. 
Assim, para montar uma cadeia de objetos é necessário especializá-la em que tipo de classes? 
Assinale dentre as opções abaixo aquela que está correta. 
 
baixa coesão. 
 
Generalizada; 
 
alto acoplamento; 
 
 
concretas; 
 
com método púbico; 
 
 
 
3. Aponte dentre as opções abaixo aquela que corresponde ao padrão que apresenta como uma 
desvantagens, a obrigatoriedade da definição de ao menos, uma classe para cada regra da 
gramática, logo, gramáticas com muitas regras são difíceis de manter e administrar. 
 
Façade; 
 
Proxy; 
 
Chain of Responsability; 
 
Template Method; 
 
 
Interpreter; 
 
 
4. Os padrões de comportamento correspondem a: 
 
 
Chain of Responsability, Command, Interpreter, Iterador, Mediator, Memento, 
Observer, State, Strategy, Template Method e Visitor 
 
Abstract Factory, Builder, Factory Method, Prototype e Singleton. 
 
Adapter, Bridge, Composite, Decorator, Façade, flyweight e proxy 
 
Iterador, Mediator, Bridge, Composite, Decorator, Façade, Flyweight e Proxy 
 
Todas as alternativas estão erradas 
 
Explicação: 
Há 11 Padrões Comportamentais GoF: Chain of Responsability, Command, Interpreter, 
Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor. 
São projetados para organizar, gerenciar e combinar diferentes comportamentos. 
O objetivo dos Comportamentais têm a ver com a maneira pela qual responsabilidades são 
distribuídas a classes e objetos durante a realização de uma tarefa. São abstrações de 
aspectos comportamentais. 
 
 
5. (CESGRANRIO - 2008) Muitos frameworks utilizam um padrão de projeto (design pattern) que 
se baseia no princípio de projeto "Não nos chame, nós iremos chamar você" (O Princípio de 
Hollywood: "Don't call us, we'll call you."). Uma classe da aplicação herda de uma classe do 
framework que possui métodos abstratos, os quais são chamados em outros métodos concretos. 
A classe da aplicação sobrepõe os métodos abstratos da classe do framework com métodos 
concretos, permitindo que os métodos concretos da classe do framework sejam chamados. 
 
O padrão de projeto (design pattern) em questão chama-se 
 
Abstract Factory. 
 
Strategy. 
 
Singleton. 
 
Decorator. 
 
 
Template Method. 
 
 
6. No padrão MVC é possível definir grupos de componentes principais: o Model (Modelo), o View 
(Apresentação) e o Controller (Controle). Deve fazer parte do componente: 
 
Controller, as animações desenvolvidas em Flash. 
 
 
Controller, uma classe que contém um método com a finalidade de calcular o reajuste 
de salário dos funcionários. 
 
 
View, uma classe que contém um método para persistir o salário reajustado de um 
funcionário. 
 
 
Model, as classes com métodos conhecidos como setters e getters e que representam 
tabelas do banco de dados. 
 
 
View, as validações necessárias ao sistema, geralmente definidas através de um 
conjunto de comparações. 
 
Explicação: 
O padrão de arquitetura MVC é uma combinação de padrões centrada no padrão Observer e 
consiste de três participantes: 
Model: representa os dados da aplicação e regras de negócio associadas com os dados. 
Notifica o View sobre alterações. 
View: é um Observer para o Model. Notifica o Controller sobre eventos iniciados pelo usuário 
e lê dados do Model. 
Controller: é um Observer para o View. Encapsula lógica de controle que afeta o Model e 
seleciona View. 
 
 
7. (CESGRANRIO - 2010) Um dos participantes da equipe de desenvolvimento de um framework 
deve implementar uma operação em uma das classes desse framework. Seja X o nome dessa 
classe. Essa operação implementa um algoritmo em particular. Entretanto, há passos desse 
algoritmo que devem ser implementados pelos usuários do framework através da definição de 
uma subclasse de X. Sendo assim, qual o padrão de projeto do catálogo GoF (Gang of Four) a 
ser usado pelo desenvolvedor do framework na implementação da referida operação, dentre os 
listados a seguir? 
 
Interpreter. 
 
Singleton. 
 
Decorator. 
 
Observer. 
 
 
Template Method. 
Explicação: 
A família de padrões GoF, está divida em três grupos principais de padrões: Padrões de 
Criação, Padrões Estruturais e Padrões Comportamentais. 
Há cinco padrões de criação GoF: Abstract Factory, Builder, Factory Method, Prototype e 
Singleton. 
Há 7 (sete) tipos de padrões estruturais GoF: Adapter, Bridge, Composite, Decorator, 
Façade, Flyweight e Proxy. 
Há 11 padrões comportamentais GoF: Chain of Responsibility, Command, Interpreter, 
Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor. 
O Template Method define o esqueleto de um algoritmo dentro de uma operação, deixando 
alguns passos aserem preenchidos pelas subclasses. Template Method permite que suas 
subclasses redefinam certos passos de um algoritmo sem mudar sua estrutura. 
 
 
8. (PETROBRAS - CESGRANRIO 2010) Um dos participantes da equipe de desenvolvimento de 
um framework deve implementar uma operação em uma das classes desse framework. Seja X o 
nome dessa classe. Essa operação implementa um algoritmo em particular. Entretanto, há passos 
desse algoritmo que devem ser implementados pelos usuários do framework através da definição 
de uma subclasse de X. Sendo assim, qual o padrão de projeto do catálogo GoF (Gang of Four) a 
ser usado pelo desenvolvedor do framework na implementação da referida operação, dentre os 
listados a seguir? 
 
 
Template Method. 
 
Singleton. 
 
Interpreter. 
 
Decorator. 
 
Observer. 
 
 
Questões Aula 6 
1. A equipe de desenvolvimento de um sistema de folha de pagamento está enfrentando 
problemas para modelar o sistema porque existe uma infinidade de objetos no sistema antigo 
que devem ser integrados ao novo. Qual padrão poderia ser utilizado para a equipe nessa 
situação? 
a) O padrão Facade, pois ele reduz a complexidade de conexão e o uso de partes 
preexistentes de um sistema. 
b) O padrão Bridge, que pode fornecer uma interface para servir de ponte entre o sistema novo e 
o antigo. 
c) O padrão Prototype, porque ele permite criar instâncias novas copiando um objeto protótipo 
como modelo. 
d) O padrão Facade, pois ele garante que apenas um objeto existe no sistema, 
independentemente de quantas requisições a classe recebe para criá-lo. 
e) O padrão Bridge, que pode criar múltiplas interfaces para reduzir a complexidade das conexões 
entre os objetos. 
 
 
Gabarito: Um dos principais benefícios do Facade é proporcionar a redução da complexidade de 
uso da interface de um componente complexo ou de um sistema por meio do uso de interfaces 
que encapsulam a complexidade dos demais objetos existentes. 
 
2. Em todas as situações descritas a seguir é recomendável o uso do padrão 
Flyweight, exceto: 
a) Quando grupos de objetos puderem ser substituídos por poucos objetos compartilhados. 
b) Quando os custos de alocação dos objetos na memória forem altos por causa da grande 
quantidade de objetos existente no sistema. 
c) Quando uma aplicação utilizar uma pequena quantidade de objetos. 
d) Quando o sistema não precisar conhecer a identidade dos objetos. 
e) Quando o sistema contiver uma grande quantidade de objetos de pequena funcionalidade. 
 
 
Gabarito: É recomendado o uso do padrão Flyweight para sistemas que possuem grande 
quantidade de objetos de pequena funcionalidade. 
 
3. O padrão Proxy implementa a interface ______. Nesse caso, o sistema passa a utilizar o 
objeto ______ no lugar do ________ de forma transparente para o ______. 
a) Objeto, Proxy, Objeto Real, Cliente. 
b) Ponte, Proxy, Objeto, Cliente. 
c) Fachada, Objeto, Proxy, Cliente. 
d) Decoração, Cliente, Proxy, Objeto Real. 
e) Proxy, Objeto, Real, Proxy, Cliente. 
 
 
Gabarito: O padrão Proxy implementa a interface Objeto (Subject). Nesse caso, o sistema passa a 
utilizar o objeto Proxy (como interface) no lugar do Objeto Real (RealSubject) de forma 
transparente para o Cliente. 
 
4. Quando temos problemas no projeto de desenvolvimento de um software que são bastante 
conhecidos e podem ser mapeados em um conjunto de regras de uma linguagem, qual padrão 
pode ser utilizado pela equipe? 
a) Integer 
b) Facade 
c) Bridge 
d) Template Method 
e) Singleton 
 
Gabarito: Este padrão permite tratar um conjunto de problemas conhecido como símbolos de uma 
linguagem, que pode ser interpretada pelo sistema por meio de um conjunto de regras 
gramaticais. 
 
5. O problema tratado por este padrão se refere a dois componentes diferentes que têm 
semelhanças significativas, embora ambos não demonstrem a reutilização de interface ou a 
implementação comum. Estamos nos referindo ao padrão: 
a) Integer 
b) Facade 
c) Bridge 
d) Template Method 
e) Singleton 
 
 
 
Gabarito: No padrão Template Method, o arquiteto de software, responsável pela definição dos 
componentes, deve decidir quais partes de um algoritmo são invariantes (devem ser 
padronizadas) e quais são variantes (são personalizáveis). 
 
6. São características do padrão Chain of Responsibility as seguintes características, exceto: 
a) Diminui o acoplamento entre os objetos. 
b) Permite que a divisão de responsabilidades ocorra de forma transparente no sistema. 
c) Permite que um sistema determine, em tempo de execução, qual objeto tratará uma mensagem. 
d) Passa uma solicitação do remetente ao longo de uma cadeia de possíveis receptores. 
e) Propõe a definição de uma linguagem de domínio (um modo de representar os problemas) 
como uma gramática de linguagem simples, representando regras de domínio, como sentenças de 
linguagem, e interpretando essas sentenças para resolver o problema. 
 
Gabarito: Resposta a Esta característica é relacionada ao padrão Interpreter. 
 
 
Questões Teste de Conhecimento 6 
 
1. São vantagens da arquitetura MVC, EXCETO: 
 
 
poder ser utilizada em aplicações simples ,sem sobrecarregar o desenvolvimento com 
componentes desnecessários. 
 
possuir melhor separação de responsabilidades. 
 
garantir um crescimento constante da aplicação. 
 
permitir interfaces mais sofisticadas com o usuário. 
 
permitir a distribuição dos elementos da aplicação. 
 
Explicação: 
Essa afirmativa não é uma vantagem porque: 
Model: representa os dados da aplicação e regras de negócio associadas com os dados. 
Notifica o View sobre alterações. 
View: é um Observer para o Model. Notifica o Controller sobre eventos iniciados pelo usuário 
e lê dados do Model. 
Controller: é um Observer para o View. Encapsula lógica de controle que afeta o Model e 
seleciona View. 
O MVC é utilizado em muitos projetos devido à arquitetura que possui, o que possibilita a 
divisão do projeto em camadas muito bem definidas. Cada uma delas, o Model, o Controller e 
a View, executa o que lhe é definido e nada mais do que isso. 
A utilização do padrão MVC trás como benefício isolar as regras de negócios da lógica de 
apresentação, a interface com o usuário. Isto possibilita a existência de várias interfaces com 
o usuário que podem ser modificadas sem que haja a necessidade da alteração das regras 
de negócios, proporcionando assim muito mais flexibilidade e oportunidades de reuso das 
classes. 
Uma das características de um padrão de projeto é poder aplicá-lo em sistemas distintos. O 
padrão MVC pode ser utilizado em vários tipos de projetos como, por exemplo, desktop, web 
e mobile. 
2. Definir um objeto que encapsula a forma como um conjunto de objetos interagem. Promove o 
baixo acoplamento ao evitar que os objetos se refiram uns aos outros diretamente/explicitamente. 
Qual opção abaixo corresponde à descrição anterior? 
 
Intenção do padrão de projeto proxy 
 
Intenção do padrão de projeto strategy 
 
Intenção do padrão de projeto composite 
 
Intenção do padrão de projeto prototype 
 
 
Intenção do padrão de projeto mediator 
 
Explicação: 
Há 11 Padrões Comportamentais GoF: Chain of Responsability, Command, Interpreter, 
Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor. 
São projetados para organizar, gerenciar e combinar diferentes comportamentos. 
O objetivo dos Comportamentais têm a ver com a maneira pela qual responsabilidades são 
distribuídas a classes e objetos durante a realização de uma tarefa. São abstrações de 
aspectos comportamentais. 
O padrão Mediator é um padrão define um objeto que encapsula a forma como um conjunto 
de objetos interage, promovendo o acoplamento fraco ao evitar que os objetos se refiram unsaos outros explicitamente, permitindo variar suas interações independentemente. 
 
 
3. Qual padrão encapsula uma solicitação como objeto permitindo parametrizar clientes com 
diferentes solicitações, enfileirar ou fazer log das solicitações e suportar operações que podem 
ser desfeitas? 
 
Mediator. 
 
Nenhuma das anteriores. 
 
State. 
 
 
Command. 
 
Observer. 
 
Explicação: 
Há 11 Padrões Comportamentais GoF: Chain of Responsability, Command, Interpreter, 
Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor. 
São projetados para organizar, gerenciar e combinar diferentes comportamentos. 
O objetivo dos Comportamentais têm a ver com a maneira pela qual responsabilidades são 
distribuídas a classes e objetos durante a realização de uma tarefa. São abstrações de 
aspectos comportamentais. 
O padrão Command encapsula uma solicitação como um objeto, permitindo a 
parametrização de clientes com diferentes solicitações, o enfileiramento e o registro de 
solicitações e o suporte a operações que possam ser desfeitas. O objetivo do padrão de 
projeto Command é encapsular chamadas de métodos. 
As principais aplicabilidades deste padrão de projeto são: permitir fácil inclusão de novos 
comandos, permitir tratamento de requisições concorrentes, manter histórico de execução de 
comandos, suportar operações para desfazer comandos e, principalmente, evitar o 
acoplamento direto entre classes e serviços 
 
 
4. Existe um padrão de projeto que é bastante utilizado em programação de sistema para 
gerenciar a comunicação entre dois ou mais objetos. Ele pode ser visto como uma classe 
intermediária de comunicação e gerenciamento, evitando que os objetos se comuniquem de 
forma direta. Dentre as opções abaixo assinale aquela que está correta para a colocação acima. 
 
 
Padrão Mediator; 
 
Command; 
 
Padrão Proxy; 
 
Padrão Memento 
 
Padrão Interator; 
 
 
5. O padrão de projeto Comand apresenta uma serie aplicabilidades. Assinale dentre as opções 
abaixo a unica que não esta correta. permitir fácil inclusão de novos comandos,permitir isições 
concorrentes, manter histórico de execução de comandos, suportar operações para desfazer 
comandos e, principalmente, evitar o acoplamento direto entre classes e serviços. permitir 
tratamento de requ 
 
Evitar o acoplamento direto entre classes e serviços; 
 
permitir tratamento de requisições concorrentes; 
 
permitir fácil inclusão de novos comandos 
 
Manter histórico de execução de comandos; 
 
 
Permitir em casos excepcionais o acoplamento direto entre classes e serviços; 
 
 
6. As principais aplicabilidades do padrão command de projeto são: 
 
I) permitir fácil inclusão de novos comandos; 
II) permitir tratamento de requisições concorrentes, manter histórico de execução de comandos; 
III) suportar operações para desfazer comandos e; 
IV) evitar o acoplamento direto entre classes e serviços. 
 
Podemos a firmar com certeza que: 
 
As afirmativas I, II, IV estão corretas e a afirmativa III está errada. 
 
As afirmativas I, II, III estão erradas e IV correta. 
 
As afirmativas I, III, IVestão corretas e II errada. 
 
As afirmativas II, III ,IVestão corretas e a afirmativa I está errada. 
 
 
As afirmativas I, II, III e IV estão corretas. 
 
Explicação: 
Há três grupos de padrões GoF: Padrões de Criação, Padrões Estruturais e Padrões 
Comportamentais. 
Os padrões Comportamentais GoF contemplam 11 (onze) tipos de padrões: Escopo por 
Classe: Interpreter, Template Method; Escopo por Objeto: Chain of Responsibility, 
Command, Iterator, Mediator, Memento, Observer, State, Strategy, e Visitor. 
O Command encapsula uma solicitação como um objeto, permitindo a parametrização de 
clientes com diferentes solicitações, o enfileiramento e o registro de solicitações e o suporte a 
operações que possam ser desfeitas. 
O objetivo do padrão de projeto Command é encapsular chamadas de métodos. 
As principais aplicabilidades deste padrão de projeto são: permitir fácil inclusão de novos 
comandos, permitir tratamento de requisições concorrentes, manter histórico de execução de 
comandos, suportar operações para desfazer comandos e, principalmente, evitar o 
acoplamento direto entre classes e serviços. 
 
 
7. 
i) Iterator fornece uma maneira de acessar elementos de um objeto agregado seqüencialmente, 
sem expor sua representação interna. 
ii) Mediator oferece uma interface única de nível mais elevado para um conjunto de interfaces de 
um subsistema. 
iii) Observer define uma dependência um-para-muitos entre objetos para que quando um objeto 
mudar de estado, os seus dependentes sejam notificados e atualizados automaticamente. 
Em relação aos itens acima está correto: 
 
somente a i e ii 
 
somente a ii 
 
 
somente a i e iii 
 
somente a i 
 
somente a ii e iii 
 
Explicação: 
Há 11 Padrões Comportamentais GoF: Chain of Responsability, Command, Interpreter, 
Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor. 
São projetados para organizar, gerenciar e combinar diferentes comportamentos. 
O item II está errado porque o padrão Mediator é um padrão define um objeto que encapsula 
a forma como um conjunto de objetos interage, promovendo o acoplamento fraco ao evitar 
que os objetos se refiram uns aos outros explicitamente, permitindo variar suas interações 
independentemente. 
 
 
8. Um padrão arquitetural que se preocupa em resolver o problema da organização objetivando 
facilitar a manutenção e aumentar a coesão entre classes afins e assim facilitar o reuso de código 
de forma ordenada e econômica, dividindo essas classes em camadas com finalidades 
específicas de armazenar os domínios da aplicação, as apresentações e as regras de negócio é 
denominado: 
 
Kernel 
 
Monolítico 
 
 
Model-View-Control 
 
NCamandas 
 
Pure Fabrication 
 
Explicação: 
O padrão de arquitetura MVC é uma combinação de padrões centrada no padrão Observer 
e consiste de três participantes: 
Model: representa os dados da aplicação e regras de negócio associadas com os dados. 
Notifica o View sobre alterações. 
View: é um Observer para o Model. Notifica o Controller sobre eventos iniciados pelo usuário 
e lê dados do Model. 
Controller: é um Observer para o View. Encapsula lógica de controle que afeta o Model e 
seleciona View. 
O MVC é utilizado em muitos projetos devido à arquitetura que possui, o que possibilita a 
divisão do projeto em camadas muito bem definidas. Cada uma delas, o Model, o Controller e 
a View, executa o que lhe é definido e nada mais do que isso. 
A utilização do padrão MVC trás como benefício isolar as regras de negócios da lógica de 
apresentação, a interface com o usuário. Isto possibilita a existência de várias interfaces com 
o usuário que podem ser modificadas sem que haja a necessidade da alteração das regras 
de negócios, proporcionando assim muito mais flexibilidade e oportunidades de reuso das 
classes. 
Uma das características de um padrão de projeto é poder aplicá-lo em sistemas distintos. O 
padrão MVC pode ser utilizado em vários tipos de projetos como, por exemplo, desktop, web 
e mobile. 
 
 
Questões Aula 7 
1. Qual padrão tem o objetivo de encapsular um pedido em um objeto, permitindo, assim, 
parametrizar clientes com pedidos diferentes, enfileirar pedidos, fazer log de pedidos e dar 
suporte a operações de undo? 
a) Command 
b) Iterator 
c) Mediator 
d) Memento 
e) Facade 
 
Gabarito: O Command tem o objetivo definido pela GoF de encapsular um pedido em um objeto 
para parametrizar e tratar solicitações de vários clientes. 
 
 
2. Qual padrão resolve o problema relacionado à necessidadede abstração do acesso a uma 
lista de elementos armazenados em estruturas de dados diversas? 
a) Integer 
b) Memento 
c) Mediator 
d) Template Method 
e) Iterator 
 
Gabarito: O problema tratado por este padrão refere-se à necessidade de abstrairmos o percurso 
de estruturas de dados totalmente diferentes para que possam ser definidos algoritmos capazes 
de interagir com cada uma delas de forma transparente. 
 
3. Qual padrão diminui o acoplamento entre os objetos, permitindo que haja comunicação entre 
eles? 
a) Integer 
b) Memento 
c) Mediator 
d) Template Method 
e) Iterator 
 
 
Gabarito: No padrão Mediator, um objeto mediador deve encapsular qualquer comunicação entre 
um grupo de objetos. Cada um deles deve conhecer o mediador, mas ignorar a existência dos 
outros objetos. 
 
4. Qual padrão oferece uma maneira simples de salvar valores (estados) internos dos atributos 
de um objeto, bastando salvar todas as informações necessárias em uma classe de 
armazenamento de estados para recuperá-las mais tarde? 
a) Integer 
b) Memento 
c) Mediator 
d) Template Method 
e) Iterator 
 
 
Gabarito: Esse é o objetivo deste padrão. 
 
 
Questões Teste de Conhecimento 7 
 
1. O padrão de projeto State deve ser implementado não somente quando o comportamento de 
um objeto depende do seu estado, mas também quando a funcionalidade de um objeto possui 
_______________; Complete a lacuna com a opção correta. . 
 
padrão visitor; 
 
padrão bridge; 
 
Atributos valorados; 
 
agreagações; 
 
 
condicionais grandes; 
 
 
2. Qual padrão define uma família de algoritmos, encapsula cada uma delas e torna-as 
intercambiáveis, e permite que o algoritmo varie independentemente dos clientes que o utilizam? 
 
Decorator. 
 
Nenhuma das anteriores. 
 
Visitor. 
 
 
Strategy. 
 
Template Method. 
 
Explicação: 
Há 11 Padrões Comportamentais GoF: Chain of Responsability, Command, Interpreter, 
Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor. 
São projetados para organizar, gerenciar e combinar diferentes comportamentos. 
O objetivo dos Comportamentais têm a ver com a maneira pela qual responsabilidades são 
distribuídas a classes e objetos durante a realização de uma tarefa. São abstrações de 
aspectos comportamentais. 
O padrão Strategy define uma família de algoritmos , encapsula cada um deles, e torna-os 
intercambiáveis, permitindo assim que os algoritmos variem independentemente dos clientes 
que os utilizam. 
 
 
3. Marque a alternativa que está relacionada com o padrão de projeto que permite definir uma 
nova operação sem mudar as classes dos elementos sobre os quais opera. 
 
Observer 
 
 
Visitor 
 
Strategy 
 
Memento 
 
State 
 
 
4. (2016 - COPEVE-UFAL) A adoção de padrões de projeto proporciona uma reutilização 
estratégica durante o desenvolvimento de software, uma vez que promove o reuso de soluções 
previamente validadas e notadamente bem conhecidas (reuso de rationale). A figura apresenta 
um diagrama de classes que modela o controlador responsável por controlar o nível de dificuldade 
de um jogo eletrônico. Vale salientar que o nível de dificuldade pode ser ajustado em tempo de 
execução, a partir do perfil de cada jogador. 
 
 
Assinale a alternativa que representa o padrão de projetos que foi utilizado no exemplo 
apresentado na figura. 
 
 
Composite, pois os diversos níveis de dificuldade estão representados através de uma 
hierarquia bem definida. 
 
 
Command, uma vez que cada nível de dificuldade representa um comando 
complementar do jogo, representando, assim, diferentes formas de acionar o jogo. 
 
 
Chain of Responsability, uma vez que não se sabe a priori qual o nível de dificuldade 
que será utilizado, variando no decorrer da execução. 
 
Observer, uma vez que o controlador precisa monitorar os níveis de dificuldade. 
 
 
State, uma vez que este padrão possui o propósito de facilitar mudanças dinâmicas 
na execução dos métodos. 
 
Explicação: 
Há 11 Padrões Comportamentais GoF: Chain of Responsability, Command, Interpreter, 
Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor. 
São projetados para organizar, gerenciar e combinar diferentes comportamentos. 
O objetivo dos Comportamentais têm a ver com a maneira pela qual responsabilidades são 
distribuídas a classes e objetos durante a realização de uma tarefa. São abstrações de 
aspectos comportamentais. 
O padrão State permite que um objeto altere o seu comportamento quando o seu estado 
interno muda. O objeto parecerá ter mudado de classe. 
O padrão encapsula os estados em classes separadas e delega as tarefas para o objeto que 
representa o estado atual, nós sabemos que os comportamentos mudam juntamento com o 
estado interno. 
 
5. Qual padrão é melhor usado para um sistema Desktop? 
 
Strategy; 
 
Memento; 
 
Visitor; 
 
State; 
 
 
Observer; 
 
Explicação: 
Esta opção está correta porque o objetivo do padrão Observer é definir uma dependência 
um-para-muitos entre objetos para que quando um objeto mudar de estado, todos os seus 
dependentes sejam notificados e atualizados automaticamente. 
O Observer tem uma característica diferente. É muito usado em sistema desktop. 
 
 
6. Dentre as opções abaixo identifique aquela que corresponde ao padrão de projeto, cujo 
principal objetivo, é permitir que sejam adicionadas novas funcionalidades a classes previamente 
concebidas sem que haja necessidade de alterar sua implementação. 
 
Strategy; 
 
Criador; 
 
Interpreter 
 
 
Visitor; 
 
State; 
 
 
7. Qual padrão representa uma operação a ser executada nos elementos de uma estrutura de 
objetos e permite definir uma nova operação sem mudar as classes dos elementos sobre os quais 
operar? 
 
Decorator. 
 
Nenhuma das anteriores. 
 
Bridge. 
 
Memento. 
 
 
Visitor. 
 
Explicação: 
Há 11 Padrões Comportamentais GoF: Chain of Responsability, Command, Interpreter, 
Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor. 
São projetados para organizar, gerenciar e combinar diferentes comportamentos. 
O objetivo dos Comportamentais têm a ver com a maneira pela qual responsabilidades são 
distribuídas a classes e objetos durante a realização de uma tarefa. São abstrações de 
aspectos comportamentais. 
O padrão Visitor representa uma operação a ser realizada nos elementos de uma estrutura 
de objetos. Visitor permite que você defina uma nova operação sem alterar as classes dos 
elementos nos quais a operação atua. 
 
 
8. O padrão Visitor é um Padrão Comportamental GoF. O objetivo desse padrão é: 
I- Representar uma operação a ser realizada nos elementos de uma estrutura de objetos; 
II- Definir uma dependência um-para-muitos entre objetos para que quando um objeto mudar de 
estado, todos os seus dependentes sejam notificados e atualizados automaticamente; 
III- permite que você defina uma nova operação sem alterar as classes dos elementos nos quais a 
operação atua; 
Est(á)ão correta(s) a(s) afirmativa(s): 
 
Somente os itens I e II; 
 
Somente o item I; 
 
Somente o item II; 
 
 
Somente os itens I e III; 
 
Somente o item III; 
 
Explicação: 
O objetivo do padrão Visitor, de acordo com Gamma et. al, 2000, é representar uma 
operação a ser realizada nos elementos de uma estrutura de objetos. Visitor permite que 
você defina uma nova operação sem alterar as classes dos elementos nos quais a operação 
atua. 
O item II está incorreto, porque esse é o objetivo do padrão Observer. 
 
 
Questões Aula 8 
1. O padrão Observer resolve qualtipo de problema? 
a) Como se pode assegurar que, quando um objeto mudar de estado, um número aberto de 
objetos dependentes será atualizado (sincronizado) automaticamente? 
b) Como uma dependência um-para-muitos entre objetos pode ser definida sem tornar os objetos 
fracamente acoplados? 
c) De que forma o modo como um conjunto de objetos dependentes interage entre si pode ser 
alterado independentemente dos objetos? 
d) Como novas operações podem ser definidas para as classes de uma estrutura de objetos sem 
alterar essas classes? 
e) O padrão se aplica a todos os tipos de problemas listados anteriormente. 
 
 
Gabarito: Observer controla o estado de um grupo de objetos dependentes atualizando o estado 
deles automaticamente. 
 
2. Qual das soluções seguintes o padrão de design State não descreve? 
a) Como as classes devem delegar o comportamento específico do estado para seu objeto de 
estado atual em vez de implementar diretamente o comportamento específico dele. 
b) Como definir instruções condicionais que alternam entre estados diferentes e 
implementam o comportamento específico do estado correspondente em cada ramificação 
condicional. 
c) Como encapsular o comportamento específico do estado em um objeto State separado. 
d) Como definir uma interface de estado comum para executar um comportamento específico do 
estado para todos aqueles suportados. 
e) Como separar (desacoplar) o comportamento específico do estado do outro código de uma 
classe para que esse comportamento possa ser alterado independentemente da classe. 
 
Gabarito: State evita a definição de instruções condicionais, delegando o comportamento 
específico do estado para o objeto de estado atual. 
 
3. Quais são as principais ideias no padrão de design de estratégia, exceto? 
a) Separar (desacoplar) um algoritmo do seu contexto para que ele possa variar de forma 
independente. 
b) Separar (desacoplar) um algoritmo do seu contexto para torná-los mais fáceis de implementar, 
alterar, testar e reutilizar. 
c) Implementar um algoritmo diretamente dentro da classe que requer o algoritmo. 
d) É recomendado o uso do padrão Strategy quando muitas classes relacionadas diferem somente 
no seu comportamento. 
e) É recomendado seu uso quando existe uma classe que define muitos comportamentos que 
aparecem em suas operações como múltiplos comandos condicionais da linguagem. 
 
Gabarito: Strategy recomenda que se encapsule um algoritmo em uma classe de estratégia 
separada. 
 
4. O padrão Visitor resolve todos os problemas a seguir, exceto? 
a) Como as novas operações podem ser definidas para as classes de uma estrutura de objeto 
independentemente de (sem alterar) qualquer classe existente? 
b) Como uma alternativa flexível pode ser fornecida para a subclassificação a fim de definir novas 
operações para as classes de uma estrutura de objetos? 
c) Como a funcionalidade dos objetos pode ser estendida em tempo de execução? 
d) Como podem ser definidas novas operações para as classes de uma estrutura de objeto 
independentemente (sem alterar ou estender) das classes? 
e) Como separar as operações que serão executadas em uma determinada estrutura de sua 
representação? 
 
Gabarito: Visitor atua para modificar as funcionalidades de um objeto em tempo de execução do 
programa, dando maior flexibilidade para a mudança de comportamento do sistema em tempo de 
execução. 
 
 
Questões Teste de Conhecimento 8 
 
1. Os 9 padrões definidos pela General Responsability Assignment Software Pattener são? 
 
 
1.Creator; 2.High Coesion; 3.Low Coupling; 4.Buider; 5.Bridge; 6.Information Expert; 
7.Pure Fabrication; 8.Indirection; e 9.Variation. 
 
 
1.Creator; 2.High Coesion; 3.Low Coupling; 4.Controller; 5.Polymorphis; 6.Information 
Expert; 7.Pure Fabrication; 8.Indirection; e 9.Facade. 
 
 
1.Singleton; 2.High Coesion; 3.Low Coupling; 4.Controller; 5.Polymorphis; 
6.Information Expert; 7.Pure Fabrication; 8.Indirection; e 9.Variation. 
 
 
1.Creator; 2.Decoretor; 3.FlyWeight; 4.Controller; 5.Polymorphis; 6.Information Expert; 
7.Pure Fabrication; 8.Indirection; e 9.Variation. 
 
 
1.Creator; 2.High Coesion; 3.Low Coupling; 4.Controller; 5.Polymorphis; 6.Information 
Expert; 7.Pure Fabrication; 8.Indirection; e 9.Variation. 
 
 
2. Utilizando a nomenclatura dos padrões GRASP, o padrão Criador assume que tipo de 
responsabilidade? 
 
 
Assume a responsabilidade de conhecer, pois sua funcionalidade está relacionada 
com a resposta a seguinte pergunta: Quem deve criar um objeto A? 
 
 
Assume a responsabilidade de fazer, pois sua funcionalidade está relacionada com a 
resposta a seguinte pergunta: Quem deve criar um objeto A? 
 
 
Assume a responsabilidade de julgar, pois sua funcionalidade está relacionada com a 
resposta a seguinte pergunta: Quem deve criar um objeto A? 
 
 
Assume a responsabilidade de substituir, pois sua funcionalidade está relacionada 
com a resposta a seguinte pergunta: Quem deve criar um objeto A? 
 
 
Assume a responsabilidade de estimar, pois sua funcionalidade está relacionada com 
a resposta a seguinte pergunta: Quem deve criar um objeto A? 
 
Explicação: 
Essa afirmativa está correta porque, utilizando a nomenclatura dos padrões GRASP (Larman, 
2007), o padrão Criador assume a responsabilidade de fazer, pois sua funcionalidade está 
relacionado com a resposta a seguinte pergunta: Quem deve criar um objeto A? Grifa-se, 
novamente, a palavra quem da pergunta anterior. 
 
 
3. Não é padrão GRASP? 
 
Polymorphism 
 
Controller 
 
Creator 
 
Indirection 
 
 
Low Cohesion 
 
Explicação: 
Temos os seguintes Padrões GRASP: Expert (Especialista), Creator (Criador), High 
Coesion, Low Coupling (Baixo Acoplamento), Controller. 
Padrões GRASP descrevem princípios fundamentais de atribuição de responsabilidade a 
objetos. 
COESÃO - Coesão mede o quanto as responsabilidades de um elemento (classe, objeto, 
subsistema,¿) são fortemente relacionadas. 
 
 
4. Os padrões GRASP são PRINCÍCPIOS, nos quais nós devemos nos basear, para o 
desenvolvimento. 
O padrão Expert (Especialista da informação) é um dos padrões GRASP. Com relação a esse 
padrão, assinale a informação INCORRETA. 
 
 
No padrão especialista, as informações que uma classe necessita podem estar 
espalhadas por toda aplicação, em diferentes classes; 
 
 
No padrão especialista, as informações disponíveis estão relacionadas ao estado do 
próprio objeto; 
 
 
No padrão especialista, a consequência relacionada com a utilização desse padrão é 
a melhoria do encapsulamento; 
 
 
O padrão especialista não está interessado no algoritmo de criação, mas sim em 
auxiliar o programador a determinar qual classe dever ser responsável pela 
instanciação de um dado objeto; 
 
 
O padrão especialista deve atribuir responsabilidade à classe que tem informações 
suficientes para atender uma dada responsabilidade; 
 
Explicação: 
Essa resposta está INCORRETA porque ela se refere ao padrão Criador. 
 
 
5. No GRASP direcionar a ação para a classe que sabe resolvê-la é: 
 
Variation 
 
Creator 
 
Controller 
 
 
Information Expert 
 
Indirection 
 
Explicação: 
Alguns padrões da família GRASP: Expert, Creator, High Coesion, Low Coupling, Controller, 
ou seja: Especialista; Criador; Baixo Acoplamento (Acoplamento Fraco). 
No Expert (Especialista da informação), o que acontece é que o comportamento está 
espalhado (estratificado) por toda árvore, em todo o gráfico de classe. 
Especialista atribuir responsabilidade ao especialista da informação. 
Especialista na informação é um princípio utilizado para determinar onde delegar 
responsabilidades. Essas responsabilidades incluem métodos, campos computados,

Continue navegando