Buscar

PADRÕES DE PROJETO DE SOFTWARE - 6 a 10

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 23 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 23 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 23 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

1. 
 
 
A definição ¿ Captar e externalizar um estado interno de um objeto, de maneira que esse estado seja restaurado ao objeto em 
outro momento, sem violar seu encapsulamento (Gamma et al., 2000).¿ Refre-se a que padrão de projeto: 
 
 
Mediator 
 
Iterator 
 
Builder. 
 
Command 
 
 
Memento 
 
 
 
Explicação: 
Memento é um padrão comportamental, assim como os seguintes padrões: command, iterator, mediator. 
O padrão Memento tem como objetivo criar um meio de armazenar informações sobre um objeto, permitindo acessar essas informações tanto para 
salvar o estado de um objeto específico, como para recuperar, sempre que for necessário. 
 
 
 
 
 
 
 
2. 
 
 
Qual padrão captura e externaliza um estado interno de um objeto para que o objeto possa ser 
restaurado para este estado mais tarde sem violar o encapsulamento? 
 
 
 
Memento. 
 
State. 
 
Visitor. 
 
Nenhuma das anteriores. 
 
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 Memento tem como objetivo criar um meio de armazenar informações sobre um 
objeto, permitindo acessar essas informações tanto para salvar o estado de um objeto específico, 
como para recuperar, sempre que for necessário. 
 
 
 
 
 
 
 
3. 
 
 
O padrão Command é um Padrão Comportamental GoF. Qual o objetivo 
desse padrão? Assinale a única resposta INCORRETA 
 
 
O objetivo do padrão de projeto Command é associar um objeto comando a cada objeto 
criado ou, pelo menos, aos objetos mais complexos; 
 
O objetivo do padrão de projeto Command é encapsular uma solicitação como um objeto, 
permitindo a parametrização de clientes com diferentes solicitações; 
 
O objetivo do padrão de projeto Command é encapsular chamadas de métodos; 
 
 
O objetivo do padrão de projeto Command é prover uma maneira de acessar os elementos 
de um objeto agregado sequencialmente sem expor sua representação interna; 
 
O objetivo do padrão de projeto Command é permitir desfazer operações realizadas por 
um comando, desde que, cada comando tenha implementado um método adicional para 
este fim; 
 
 
 
Explicação: 
Essa afirmativa está incorreta, porque ela se refere ao padrão Iterator. 
 
 
 
 
 
 
 
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 Interator; 
 
Padrão Memento 
 
 
Padrão Mediator; 
 
Command; 
 
Padrão Proxy; 
 
 
 
 
 
 
 
5. 
 
 
Qual padrão usar para fornecer um meio de acessar sequencialmente os elementos de um objeto 
agregado sem expor a sua representação subjacente? 
 
 
Nenhuma das anteriores. 
 
Mediator. 
 
Visitor. 
 
Chain of Responsability. 
 
 
Iterator. 
 
 
 
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 Iterator por definição "Prove uma maneira de acessar os elementos de um objeto 
agregado sequencialmente sem expor sua representação interna.". 
 
 
 
 
 
 
 
6. 
 
 
Qual 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? 
 
 
Command. 
 
Nenhuma das anteriores. 
 
State. 
 
 
Mediator. 
 
Strategy. 
 
 
 
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 uns aos 
outros explicitamente, permitindo variar suas interações independentemente. 
O padrão Mediator é muito útil para programadores Visual Basic (principalmente das versões 5 e 
6), pois ele é um atalho para a falta de herança. Ele é tipicamente usado em formulários em que 
o mesmo media por seus controle e componentes. 
 
 
 
 
 
 
 
7. 
 
 
(FCC - 2010) Em relação aos padrões de projetos orientados a objetos, separar dados ou lógica de 
negócios da interface do usuário e do fluxo da aplicação para permitir que uma mesma lógica de 
negócios possa ser acessada e visualizada através de várias interfaces, sem saber de quantas nem 
quais interfaces com o usuário estão exibindo seu estado, é característica do padrão de projeto 
arquitetural 
 
 
Expert. 
 
Creator. 
 
Layers. 
 
 
Model-View-Controller. 
 
Observer. 
 
 
 
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 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. 
 
 
 
 
 
 
 
8. 
 
 
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. (Gamma et al., 2000). Sobre ele podemos afirmar com toda a certeza: 
 
 
Nesta abordagem o objeto que está realizando a chamada do método precisa conhecer com detalhes a implementação 
em relação asparente ao local, tempo e ao objeto que vai realizar uma determinada tarefa 
 
Este padrão de projeto oferece pouca flexibilidade na arquitetura do sistema, uma vez que não permite adição de novas 
funcionalidades 
 
esta abordagem é que o objeto que está realizando a chamada do método precisa conhecer com detalhes sobre seu 
funcionamento. 
 
Os métodos, nesta abordagem devem ser padronizados e hierarquizados de forma que a implementação trabalhe novos 
objetos. 
 
 
O objetivo do padrão de projeto Command é encapsular chamadas de métodos. 
 
 
 
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 Chain of Responsibility, Command, Interpreter, 
Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor. 
Os Padrões Comportamentais são projetados para organizar, gerenciar e combinar diferentes comportamentos. 
Segundo Gamma et al, ¿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.¿. 
 
 
1. 
 
 
O padrão GoF comportalmental utilizado: 
 
 
 
Memento 
 
 
Strategy 
 
Observer 
 
Iterator 
 
State 
 
 
 
Explicação: 
Há 11 Padrões Comportamentais GoF: Chain of Responsibility, Command, Interpreter, 
Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor. 
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. 
 
 
 
 
 
 
 
2. 
 
 
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. . 
 
 
 
condicionais grandes; 
 
agreagações; 
 
padrão visitor; 
 
padrão bridge; 
 
Atributos valorados; 
 
 
Gabarito 
Coment. 
 
 
 
 
 
 
3. 
 
 
(COPEVE-UFAL - 2011) O diagrama de classes apresentado na figura não representa fielmente um 
buffer que passa por estados sucessivos de transformação. Em outras palavras, um buffer, que está 
inicialmente vazio, depois pode ficar parcialmente cheio e, possivelmente, pode ficar cheio. 
 
 
Dentre as opções apresentadas a seguir, qual o padrão de projetos que melhor se adequaria para 
modelar essa característica dinâmica do buffer? 
 
 
 
State. 
 
Singleton. 
 
Dynamic behavior. 
 
Composite. 
 
Mediator. 
 
 
Gabarito 
Coment. 
 
 
 
 
 
 
4. 
 
 
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. 
 
 
Memento 
 
Strategy 
 
State 
 
Observer 
 
 
Visitor 
 
 
Gabarito 
Coment. 
 
 
 
 
 
 
5. 
 
 
Qual é o padrão responsável para separar os dados lógicos e as regras de negócio da interface do 
usuário e o fluxo da aplicação? 
 
 
Controller 
 
Indirection 
 
Bridge 
 
 
MVC 
 
Chain of Responsibility 
 
 
 
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. 
 
 
 
 
 
 
 
6. 
 
 
Qual a diferença entre o padrão Strategy e State? 
 
 
 
A diferença do Strategy para o State, é que no Strategy eu vou encapsular. 
 
A diferença do Strategy para o State, é que no Strategy muda de comportamento em 
função do seu estado. 
 
A diferença do Strategy para o State, é que no Strategy vou usar objetos para representar 
estados e polimorfismos. 
 
A diferença do Strategy para o State, é que no Strategy adiciona um comportamento a 
uma aplicação. 
 
A diferença do Strategy para o State, é que no Strategy vou trabalha apenas com o estado 
da classe Conectado. 
 
 
 
Explicação: 
Esta afirmativa está correta porque 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. Já no padrão State, ele permite a um objeto 
alterar o seu comportamento quando o seu estado interno mudar. O objeto parecerá ter mudado 
de classe 
 
 
 
 
 
 
 
7. 
 
 
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? 
 
 
Template Method. 
 
Decorator. 
 
Visitor. 
 
 
Strategy. 
 
Nenhuma das anteriores. 
 
 
 
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. 
 
 
 
 
 
 
 
8. 
 
Observando a figura abaixo, determine o padrão GOF caracterizado pela 
mesma:Padrão Strategy 
 
 
Padrão State 
 
Padrão Template Method 
 
Padrão Façade 
 
Padrão Singleton 
 
 
 
Explicação: 
Os Padrões Comportamentais são projetados para organizar, gerenciar e combinar diferentes 
comportamentos. 
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. 
 
1. 
 
 
Com relação aos padrões GRASP, assinale a opção correta: 
 
 
O criador (creator) é utilizado para a solução do problema de quem cria a instância de uma classe com objetos do 
modelo de domínio. Nesse caso, se A registra B, então atribui-se à classe B a responsabilidade de se criar uma instância 
de A. 
 
O acoplamento baixo (low coupling) baseia-se na quantidade de ligações entre as classes e está destinado à atribuição de 
responsabilidade ao primeiro objeto além da camada de interface com o usuário, que é responsável por receber ou tratar 
uma mensagem de operação do sistema. 
 
 
O especialista na informação (information expert) associa-se ao mapeamento de responsabilidade em que se procura 
atribuir responsabilidade à classe que tenha informação necessária para satisfazê-la. 
 
O controlador (controller) permite solucionar problemas no controle de criação de instâncias de classes. Nesse sentido, se 
a classe X contiver dados iniciais da classe Y ou se X usar de maneira muito próxima Y, caberá a X criar instâncias de Y, 
em que o controller representaria o padrão mais indicado para solucionar esse problema. 
 
A alta coesão (high cohesion) é um padrão utilizado para aprimorar a ligação entre as classes, permitindo que a classe A 
não dependa de outras classes. Esse padrão é considerado o princípio central e útil em projetos orientados a objetos que 
utilizam GRASP. 
 
 
 
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. 
Grupamento de padrões diferente, que tem propostas diferentes dos padrões GoF. 
Os padrões GRASP são PRINCÍCPIOS, nos quais nós devemos nos basear, para desenvolvimento. 
Os padrões GRASP se inter-relacionam se misturam e são aplicados nos padrões GoF. 
Os padrões GRASP vão decidir quem é que vai assumir essa responsabilidade aqui. 
O objetivo dele é identificar quem vai determinar quem vai ter a responsabilidade, 
quem é que vai assumir a responsabilidade de um determinado conhecimento ou de uma 
determinada ação. 
 
 
 
 
 
2. 
 
 
Os padrões GRASP são PRINCÍCPIOS, nos quais nós devemos 
nos basear, para o desenvolvimento. 
A informação necessária para uma tarefa computacional 
frequentemente está ¿espalhada¿ por vários objetos. Para o 
exemplo: determinar o total de uma venda requer a 
colaboração de 3 objetos, em 3 classes diferentes, qual o 
melhor padrão GRASP deve ser usado? 
 
 
 
Expert (Especialista da informação); 
 
Coesão Alta; 
 
Controlador; 
 
Criador; 
 
Acoplamento fraco; 
 
 
 
Explicação: 
Essa resposta está correta porque Expert (Especialista da informação), porque é o padrão 
mais usado para atribuir responsabilidades. Há muitos experts parciais. Neste caso mensagens 
são usadas para estabelecer as colaborações. Note que, com o uso do padrão Expert o 
encapsulamento das classes é mantido. 
 
 
 
 
 
3. 
 
 
 
Em relação a aplicação dos padrões GRASP, para o diagrama de classe da figura acima é 
correto afirmar que: 
 
 
 
Padrão Criador: a Classe Engenheiro tem a responsabilidade de criar instâncias da classe Obra. Padrão Especialista: a 
Classe Etapa tem a responsabilidade de saber quantas Etapas uma determinada Obra possui. 
 
Padrão Criador: a Classe Obra tem a responsabilidade de criar instâncias da classe Obra. Padrão Especialista: a Classe 
Obra tem a responsabilidade de saber quantas Etapas uma determinada Obra possui. 
 
 
Padrão Criador: a Classe Engenheiro tem a responsabilidade de criar instâncias da classe Obra. Padrão Especialista: a 
Classe Obra tem a responsabilidade de saber quantas Etapas uma determinada Obra possui. 
 
Padrão Criador: a Classe Engenheiro tem a responsabilidade de criar instâncias da classe Obra. Padrão Especialista: a 
Classe Engenheiro tem a responsabilidade de saber quantas Etapas uma determinada Obra possui. 
 
Padrão Criador: a Classe Obra tem a responsabilidade de criar instâncias da classe Obra. Padrão Especialista: a Classe 
Etapa tem a responsabilidade de saber quantas Etapas uma determinada Obra possui. 
 
 
 
 
 
4. 
 
 
 
Em relação a aplicação dos padrões GRASP, para o diagrama de classe da figura acima é 
correto afirmar que: 
 
 
Padrão Criador: a Classe Cliente tem a responsabilidade de criar instâncias da classe Parcela. Padrão Especialista: a 
Classe Parcela tem a responsabilidade de saber quais são as parcelas devedoras. 
 
Padrão Criador: a Classe Empréstimo tem a responsabilidade de criar instâncias da classe Empréstimo. Padrão 
Especialista: a Classe Empréstimo tem a responsabilidade de saber quais são as parcelas de um determinado 
Empréstimo. 
 
Padrão Criador: a Classe Empréstimo tem a responsabilidade de criar instâncias da classe Empréstimo. Padrão 
Especialista: a Classe Parcela tem a responsabilidade de saber quais são as parcelas de um determinado Empréstimo. 
 
Padrão Criador: a Classe Parcela tem a responsabilidade de criar instâncias da classe Empréstimo. Padrão Especialista: a 
Classe Parcela tem a responsabilidade de saber quais são as parcelas devedoras. 
 
 
Padrão Criador: a Classe Cliente tem a responsabilidade de criar instâncias da classe Empréstimo. Padrão Especialista: a 
Classe Empréstimo tem a responsabilidade de saber quais são as parcelas de um determinado Empréstimo. 
 
 
 
Explicação: 
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. 
Creator (Criador) - O Creator do GoF está focando um problema específico (por exemplo, 
encapsulando código), este não, é decidir quem é o responsável por criar determinado recurso, 
ou artefato, e escolher quem vai criar. 
A criação de objetos é uma das mais comuns atividades em um sistema orientado a objetos. 
Descobrir qual classe é responsável por criar objetos é uma propriedade fundamental da relação 
entre objetos de classes particulares. 
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, e assim em 
diante. 
Ele vai escolher os objetos especialistas para ele receber essas responsabilidades. 
É o padrão mais usado para atribuir responsabilidades 
 
 
 
 
 
5. 
 
 
Nos padrões GRASP (General Responsability Assigment 
Software Patterns), as responsabilidades de um projeto 
podem ser divididas em ¿conhecer¿ e ¿fazer¿. Assinale o 
conceito CORRETO. 
 
 
 
No conhecer, eu delego quem é o responsável por saber o estado de uma determinada 
classe; 
 
No fazer, vai demonstrar quem é que vai saber o estado;No conhecer, eu delego a responsabilidade de quem é que vai ser responsável por criar; 
 
As responsabilidades ¿conhecer¿ estão relacionadas com a distribuição do comportamento 
do sistema entre as classes; 
 
As responsabilidades ¿fazer¿ estão relacionadas à distribuição das características do 
sistema entre as classes; 
 
 
 
Explicação: 
Esse conceito está CORRETO porque: 
As responsabilidades ¿conhecer¿ estão relacionadas à distribuição das características do sistema 
entre as classes. 
As responsabilidades ¿fazer¿ estão relacionadas com a distribuição do comportamento do sistema 
entre as classes. 
No fazer, eu delego a responsabilidade de quem é que vai ser responsável por criar. 
No conhecer, vai demonstrar quem é que vai saber o estado. 
 
 
 
 
 
6. 
 
 
O que é MELHOR para uma aplicação: acoplamento alto ou 
acoplamento fraco? Qual a afirmativa está INCORRETA. 
 
 
Um alto acoplamento traz inúmeros problemas para uma aplicação, é consenso entre 
profissionais da área que todo projeto orientado a objetos deve minimizar o acoplamento 
entre os artefatos. 
 
Um alto acoplamento traz inúmeros problemas para uma aplicação, entre as quais a 
diminuição das chances de reutilização. 
 
Um alto acoplamento traz inúmeros problemas para uma aplicação, entre as quais a 
dificuldade de entendimento da solução proposta 
 
 
Um alto acoplamento traz inúmeros problemas para uma aplicação, é consenso entre 
profissionais da área que todo projeto orientado a objetos deve aumentar o acoplamento 
entre os artefatos. 
 
Um alto acoplamento traz inúmeros problemas para uma aplicação, entre as quais 
aumentar a complexidade da manutenção da aplicação. 
 
 
 
Explicação: 
Este item está INCORRETO, porque um alto acoplamento traz inúmeros problemas para uma 
aplicação, entre as quais a dificuldade de entendimento da solução proposta, a diminuição das 
chances de reutilização, além de aumentar a complexidade da manutenção da aplicação. 
Portanto, é consenso entre profissionais da área que todo projeto orientado a objetos deve 
minimizar o acoplamento entre os artefatos. 
 
 
 
 
 
7. 
 
 
Marque a alternativa que apresenta apenas padrões GRASP? 
 
 
Observer, visitor, strategy 
 
Coesão alta, controlador, strategy 
 
Coesão alta, polimorfismo, visitor 
 
 
Coesão alta, controlador e polimorfismo 
 
Controlador, polimorfismo e Memento 
 
 
 
Explicação: 
Alguns padrões da família GRASP: Expert, Creator, High Coesion, Low Coupling, Controller, ou seja: Especialista; Criador; Baixo 
Acoplamento (Acoplamento Fraco). 
 
 
 
 
 
8. 
 
 
qual das afirmativas abaixo não é verdadeira. 
 
 
Um alto acoplamento aumenta a dificuldade de entendimento da solução proposta, a diminuição das chances de 
reutilização, além de aumentar a complexidade da aplicação. 
 
 
O ideal que dois artefatos tenham alta dependência. Isto garante um bom desempenho e facilita a manutenção dos 
artefatos. 
 
Dessa forma o padrão Acoplamento Baixo é utilizado para atribuir responsabilidades de modo que o acoplamento 
permaneça baixo. 
 
Um acoplamento definido para que classes que contenham métodos que possibilitem alterações de requisitos deve ser a 
menor possível, desta forma se favorece futuras manutenções. 
 
acoplamento é o grau de dependência entre dois artefatos. É uma medida de quão forte um elemento está conectado ou 
tem conhecimento de, ou depende de outros elementos. 
 
 
 
Explicação: 
Alguns padrões da família GRASP: Expert, Creator, High Coesion, Low Coupling, Controller, ou seja: Especialista; Criador; Baixo 
Acoplamento (Acoplamento Fraco). 
Outros padrões GRASP considerados Avançados são Inversão Pura, Indireção e Variações Protegidas. 
Vamos entender o conceito de Acoplamento e Artefato. Acoplamento é o grau de dependência entre dois 
artefatos. Artefato refere-se a qualquer elemento de um projeto de software orientado a objetos, tais como classe, método, 
componente, pacote, entre outros. 
Essa afirmativa é verdadeira porque um alto acoplamento traz inúmeros problemas para uma aplicação, entre as quais a 
dificuldade de entendimento da solução proposta, a diminuição das chances de reutilização, além de aumentar a complexidade da 
manutenção da aplicação. Portanto, é consenso entre profissionais da área que todo projeto orientado a objetos deve minimizar o 
acoplamento entre os artefatos. 
O padrão Acoplamento Baixo é utilizado para atribuir responsabilidades de modo que o acoplamento permaneça baixo. 
 
 
1. 
 
 
No padrão GRASP (General Responsability Assigment Software Patterns), a utilização 
do polimorfismo é recomendada para auxiliar a responder a duas perguntas. Uma delas é: 
Como criar componentes de software interconectáveis? 
Qual afirmativa abaixo se refere a essa pergunta? 
I- Essa pergunta se refere à utilização de comandos condicionais (if-then-esle ou switch por 
exemplo). 
II- Essa pergunta se refere a, se surgir uma nova regra ou uma nova variação condicional, ela 
exigirá a modificação dos comandos, tornando difícil alterar e estender o programa. 
III- Essa pergunta se refere a relacionamentos do tipo cliente-servidor, não necessariamente 
aplicações em rede, mas com funcionalidades semelhantes, procurando destacar a importância 
de se projetar uma solução que permita alterar o servidor sem precisar modificar ou afetar a 
classe cliente. 
Est(á)ão correta(s) a(s) afirmativa(s): 
 
 
Somente os itens II e III; 
 
 
Somente o item III; 
 
Somente o item II; 
 
Somente os itens I e II; 
 
Somente o item I; 
 
 
 
Explicação: 
Os itens I e II estão INCORRETOS porque elas se referem a primeira pergunta do padrão 
Polimorfismo, que é: 
Como tratar alternativas com base no tipo? 
 
 
 
 
 
 
 
2. 
 
sobre o Polimorfismo considere a figura abaixo e selecione a reposta totalmente correta: 
 
 
 
 
Define-se vários métodos. Cada método deve ter uma estrutura IF...THEN...para cada situação. Isto é polimorfismo. 
 
Define-se um método na classe PAI. Este método é copiado nas classes que herdam a classe PAI. Isto é polimorfismo. 
 
 
Define-se um método abstrato, em uma classe abstrata. Cada classe que herda a classe abstrata implementa o método 
físico. Dependendo da classe instanciada é executado o método correpondente. Isto é polimorfismo. 
 
Define-se uma estrutura de herança. Automaticamente fica definido uma estrutura de métodos. Isto é polimorfismo 
 
Define-se um método físico na classe PAI. Os métodos nas classes filho são definidos. Neste caso cada método é 
sobreposto. No caso de uma nova classe filho há necessidade obrigatória devido a estrutura PAI de se definir o método 
na nova classe. Isto é polimorfismo. 
 
 
 
Explicação: 
Ideia do Polimorfismo: através de uma interface única, eu possa encapsular vários comportamentos. 
O Polimorfismo indica a capacidade de abstrair várias implementações diferentes em uma única interface. 
Existem dois grandes grupos de Polimorfismo. Um deles é sobecrever um método, ou seja, subscrever métodos com a mesma 
assinatura. 
Criaria uma classe ou interface superior, definiria por dentro o método, a classe que herda teria que ter a mesma assinatura, e a 
partir daí reescrever (overwrite) esse comportamento. 
O outro não é baseado na assinatura, mais sim na chamada, pelo número de parâmetros, ele poderia escolher. EX. usar em 
consultor, onde temos um construtor com um construtor com um parâmetro dois, três, diferenciados pela quantidade e/ou tipo de 
parâmetro, estudado em aulas de programação e linguagem. 
 
 
 
 
 
 
 
3.Qual padrão GRASP tem como um de seus objetivos minimizar o impacto na camada de negócio 
referente às alterações nos requisitos da interface com o usuário? 
 
 
Mediador 
 
Indireção 
 
Especialista da Informação 
 
Alta Coesão 
 
 
Controlador 
 
 
 
 
 
 
 
4. 
 
 
Qual padrão GRASP eu devo utilizar ara atender aos seguintes problemas: 
Como manter a complexidade sob controle? 
As classes são difíceis de compreender? 
As classes são difíceis de reutilizar? 
 
 
Criador; 
 
Especialista da Informação; 
 
Indireção; 
 
Invenção Pura; 
 
 
High Cohesion (Coesão alta); 
 
 
 
Explicação: 
Essa resposta está CORRETA, porque a ideia deste padrão consiste em que, é desejável, que eu 
tenha uma aplicação de baixo acoplamento e alta coesão. Acoplamento fraco e alta coesão. 
A coesão implica que um componente ou classe encapsule somente os atributos e operações 
muito relacionadas a si e com a classe do componente ou classe propriamente dito. 
Além disso, esse padrão também serva para os seguintes problemas: as classes são difíceis de 
manter, e as classes são frágeis, sendo afetadas por praticamente todas as modificações. 
 
 
 
 
 
 
 
5. 
 
 
Com relação aos padrões GRASP, Pressman (2006) explica que a coesão 
implica que um componente ou classe encapsule somente os atributos e 
operações muito relacionadas a si e com a classe do componente ou classe 
propriamente dito. 
Relacione os tipos de coesão com a sua real definição: 
1- Ocorre quando um módulo executa um e somente um cálculo, e então 
retorna o resultado. 
2- Todas as operações que tem acesso aos mesmos dados são definidas 
dentro de uma classe. 
3- Ocorre quando uma camada de mais alto nível tem acesso a serviços de 
camadas mais baixas, mas camadas mais baixas, não tem acesso a 
camadas mais altas. 
 
 
1- COMUCACIONAL, 2- FUNCIONAL, 3- EM CAMADA. 
 
1- FUNCIONAL, 2- EM CAMADA, 3- COMUCACIONAL. 
 
1- EM CAMADA, 2- FUNCIONAL, 3- COMUCACIONAL. 
 
1- COMUCACIONAL, 2- EM CAMADA, 3- FUNCIONAL. 
 
 
1- FUNCIONAL, 2- COMUCACIONAL, 3- EM CAMADA. 
 
 
 
Explicação: 
Essa resposta está CORRETA, porque corresponde exatamente a cada uma das definições dos 
tipos de Coesão determinada por Presman. 
 
 
 
 
 
 
 
6. 
 
 
O tipo tipos de coesão caracterizada quando um módulo executa um e somente um cálculo, e então 
retorna o resultado é chamada de: 
 
 
 
Funcional; 
 
Em Camada; 
 
Recursiva. 
 
Paralela; 
 
Comucacional 
 
 
 
 
 
 
 
7. 
 
 
Com relação à arquitetura MVC, considere: I. O MODEL representa os dados da empresa e as regras 
de negócio que governam o acesso e atualização destes dados. II. O VIEW acessa os dados da 
empresa através do MODEL e especifica como esses dados devem ser apresentados. É de 
responsabilidade do VIEW manter a consistência em sua apresentação, quando o MODEL é alterado. 
III. O CONTROLLER traduz as interações do VIEW em ações a serem executadas pelo MODEL. Com 
base na interação do usuário e no resultado das ações do MODEL, o CONTROLLER responde 
selecionando uma VIEW adequada. IV. Permite uma única VIEW para compartilhar o mesmo modelo 
de dados corporativos em um fluxo de comunicação sequencial. Está correto o que se afirma em 
 
 
II e III, apenas. 
 
II, III e IV, apenas. 
 
 
I, II e III, apenas. 
 
I e II, apenas. 
 
I, II, III e IV. 
 
 
 
Explicação: 
A afirmativa IV é incorreta porque o padrão de arquitetura MVC (Model-View-Controller) é 
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. 
 
 
 
 
 
 
 
8. 
 
 
O General Responsability Assignment Software Pattener que define a responsabilidade: 
Comportamentos com o mesmo nome mas que fazem operações deferentes. Trata-se de? 
 
 
 
Polymorphis 
 
Pure Fabrication 
 
Indirection 
 
Information Expert 
 
High Coesion 
 
 
 
Explicação: 
Polymorphism (Polimorfismo) - através de uma interface única, eu possa encapsular 
vários comportamentos. 
De acordo com o princípio do polimorfismo, a responsabilidade de definir a variação dos comportamentos 
com base no tipo é atribuída ao tipo para o qual essa variação ocorre. Isto é conseguido utilizando operações 
polimórficas. 
 
 
1. 
 
 
Marque dentre as opções apresentadas aquela que corresponde ao padrão de projeto que sugere atribuir um conjunto de 
responsabilidades altamente coesas a uma classe artificial, ou de conveniência, que não represente o domínio do problema, 
algo inventado, para apoiar coesão alta, acoplamento baixo e reuso. 
 
 
Criador 
 
Variações protegidas; 
 
Indireção; 
 
Proxy; 
 
 
Invenção pura; 
 
 
Gabarito 
Coment. 
 
 
 
 
2. 
 
 
O padrão Invenção Pura tem como característica: 
 
 
O objetivo é atribuir responsabilidade a um objeto intermediário para servir como mediador entre outros componentes ou 
serviços, para que eles não sejam diretamente acoplados. 
 
 
Sugere atribuir um conjunto de responsabilidades altamente coesa a uma classe artificial ou de conveniência que não 
represente o domínio do problema, algo inventado, para apoiar coesão alta, acoplamento baixo e reuso. 
 
É um principio básico para fornecer flexibilidade e proteção contra diversos tipos de variações em um projeto orientado a 
objetos, tais como: variações nos dados, comportamento, hardware, componentes de software, sistemas operacionais, 
entre outros. 
 
é o primeiro objeto além da camada de interface com o usuário que é responsável por receber ou tratar uma mensagem 
de operação do sistema. 
 
implica que um componente ou classe encapsule somente os atributos e operações muito relacionadas a si e com a 
classe do componente ou classe propriamente dito. 
 
 
 
Explicação: 
Alguns padrões da família GRASP: Expert, Creator, High Coesion, Low Coupling, Controller, ou seja: Especialista; Criador; Baixo 
Acoplamento (Acoplamento Fraco). 
Outros padrões GRASP considerados Avançados são Inversão Pura (Pure Fabrication), Indireção e Variações Protegidas. 
O padrão Inversão Pura resolve problemas como: Que objeto deve ter a responsabilidade, quando não se quer violar a Alta 
Coesão e o Baixo Acoplamento, mas as soluções oferecidas por Expert não são adequadas? e Atribuir responsabilidades apenas 
para classes do domínio conceitual pode levar à situações de maior acoplamento e menos coesão. 
A solução para isso é atribuir um conjunto altamente coesivo de responsabilidades (ou seja, aquelas séries de responsabilidades 
que são coesasvou atribui-las a) a uma classe artificial (ou seja, uma classe que não seja do domínio do negócio) que não 
representa um conceito do domínio do problema (a ser resolvido). 
 
 
 
 
 
3. 
 
 
O padrão de projeto variações protegidas é um princípio básico para fornecer 
_____________e _____________ flexibilidade e proteção contra diversos tipos 
de variações em um projeto orientado a objetos, Complete as lacunas com a 
opção correta. 
 
 
proteção e visibilidade; 
 
flexibilidade, proteção e visibilidade. 
 
 
flexibilidade e proteção; 
 
proteção e coesão; 
 
flexibilidade e acoplamento; 
 
 
 
 
 
4. 
 
 
Dentre as opções abaixo assinale aquela que não se constitui em um benefícios da 
aplicação do padrão variações protegidas. 
 
 
o acoplamento fica mais baixo; 
 
 
as extensões para novas variações são difiíceis de adicionar, 
 
as extensões para novas variações são fáceis de adicionar, 
 
novas implementações são introduzidas sem afetar o cliente, 
 
o impacto ou custo das modificações pode ser diminuído. 
 
 
Gabarito 
Coment. 
 
 
 
 
5. 
 
 
Marque a alternativa que representa o padrão GRASP que está relacionada com a 
seguinte questão: Como distribuir responsabilidades buscando alcançar Coesão 
Alta ou Acoplamento Baixo? 
 
 
polimorfismo 
 
controlador 
 
Indireção 
 
 
Invenção Pura 
 
variações protegidas 
 
 
 
Explicação: 
Alguns padrões da família GRASP: Expert, Creator, High Coesion, Low Coupling, Controller, ou seja: Especialista; Criador; Baixo 
Acoplamento (Acoplamento Fraco). 
Como não há uma classe de domínio de negócio que seria cabível a delegação desse comportamento, a intenção é, através do 
padrão Inversão Pura, 
A Inversão Pura é utilizada em projetos de software para projetar uma classe que não pertença ao domínio do problema, mas 
que ofereça ao projeto coesão alta, acoplamento baixo e reuso. 
 
 
 
 
 
6. 
 
 
O padrão Indireção tem como característica: 
 
 
implica que um componente ou classe encapsule somente os atributos e operações muito relacionadas a si e com a 
classe do componente ou classe propriamente dito. 
 
Sugere atribuir um conjunto de responsabilidades altamente coesa a uma classe artificial ou de conveniência que não 
represente o domínio do problema, algo inventado, para apoiar coesão alta, acoplamento baixo e reuso. 
 
 
O objetivo é atribuir responsabilidade a um objeto intermediário para servir como mediador entre outros componentes ou 
serviços, para que eles não sejam diretamente acoplados. 
 
É um principio básico para fornecer flexibilidade e proteção contra diversos tipos de variações em um projeto orientado a 
objetos, tais como: variações nos dados, comportamento, hardware, componentes de software, sistemas operacionais, 
entre outros. 
 
é o primeiro objeto além da camada de interface com o usuário que é responsável por receber ou tratar uma mensagem 
de operação do sistema. 
 
 
 
Explicação: 
O objetivo é atribuir responsabilidade a um objeto intermediário para servir como mediador entre outros componentes ou serviços, 
para que eles não sejam diretamente acoplados.. 
E: 
Alguns padrões da família GRASP: Expert, Creator, High Coesion, Low Coupling, Controller, ou seja: Especialista; Criador; Baixo 
Acoplamento (Acoplamento Fraco). 
Outros padrões GRASP considerados Avançados são Inversão Pura (Pure Fabrication), Indireção e Variações Protegidas. 
O padrão Indireção resolve problemas como: a quem devemos atribuir a responsabilidade, evitando o acoplamento direto entre 
dois ou mais objetos? e como desacoplar objetos apoiando o Acoplamento Baixo e maximizando o potencial de reuso? 
A solução para isso é atribuir a responsabilidade a um objeto intermediário para mediar as mensagens entre outros componentes 
ou serviços, para que não sejam diretamente acoplados e o objeto intermediário cria uma camada de indireção entre os dois 
componentes que não mais dependam um do outro: Ambos dependem da indireção. 
A Indireção quer que dois objetos, evite-se o acoplamento direto entre eles. 
A ideia é diminuir o acoplamento e manter a coesão. 
 
 
 
 
 
7. 
 
 
O padrão Variações protegidas tem como característica: 
 
 
Sugere atribuir um conjunto de responsabilidades altamente coesa a uma classe artificial ou de conveniência que não 
represente o domínio do problema, algo inventado, para apoiar coesão alta, acoplamento baixo e reuso. 
 
implica que um componente ou classe encapsule somente os atributos e operações muito relacionadas a si e com a 
classe do componente ou classe propriamente dito. 
 
O objetivo é atribuir responsabilidade a um objeto intermediário para servir como mediador entre outros componentes ou 
serviços, para que eles não sejam diretamente acoplados. 
 
é o primeiro objeto além da camada de interface com o usuário que é responsável por receber ou tratar uma mensagem 
de operação do sistema. 
 
 
É um principio básico para fornecer flexibilidade e proteção contra diversos tipos de variações em um projeto orientado a 
objetos, tais como: variações nos dados, comportamento, hardware, componentes de software, sistemas operacionais, 
entre outros. 
 
 
 
Explicação: 
Alguns padrões da família GRASP: Expert, Creator, High Coesion, Low Coupling, Controller, ou seja: Especialista; Criador; Baixo 
Acoplamento (Acoplamento Fraco). 
Outros padrões GRASP considerados Avançados são Inversão Pura (Pure Fabrication), Indireção e Variações Protegidas. 
O padrão de projeto Variações Protegidas é um princípio básico para fornecer flexibilidade e proteção contra diversos tipos de 
variações em um projeto orientado a objetos, tais como: variações nos dados, comportamento, hardware, componentes de 
software, sistemas operacionais, entre outros. As variações podem ser ainda divididas em evolutivas e corretivas. 
O padrão Variações Protegidas resolve problemas como: Como projetar objetos, subsistemas e sistemas para que as variações 
ou instabilidades nesses elementos não tenham um impacto indesejável nos outros elementos? 
A ideia é identificar os pontos de variação ou instabilidade previsível e atribuir responsabilidades para criar uma interface estável 
em torno deles. Larman (2007) compara o amadurecimento de um desenvolver ou projetista de software ao seu crescente 
conhecimento sobre mecanismos para obter variações protegidas. Argumenta que, nos primeiros estágios, o programador aprende 
sobre encapsulamento de dados, interfaces e polimorfismo. 
 
 
 
 
 
8. 
 
 
Para o problema: 
Que objeto deve ter a responsabilidade, quando não se 
quer violar a Alta Coesão e o Baixo Acoplamento, mas 
as soluções oferecidas por Expert não são adequadas? 
Que solução devemos aplicar? Assinale a resposta CORRETA. 
 
 
Atribuir um objeto intermediário entre os dois componentes que não mais dependam um 
do outro; 
 
Atribuir a responsabilidade a um objeto intermediário para mediar as mensagens; 
 
Atribuir por meio de Polimorfismo, uma interface consistente; 
 
 
Atribuir um conjunto altamente coesivo de responsabilidades a uma classe artificial, que 
não representa um conceito do domínio do problema; 
 
Atribuir a responsabilidade a um objeto intermediário entre outros componentes ou 
serviços, para que não sejam diretamente acoplados; 
 
 
 
Explicação: 
Essa resposta está correta porque as outras se referem a soluções de Indireção.

Continue navegando