Lista de Exercícios de Projeto e Implementação Orientado a Objeto – Lista 6
Questão 1
(TRT-15ª Região/2015) Os padrões de projeto tornam mais fácil reutilizar projetos e arquiteturas bem sucedidas. Atualmente existem diversos padrões de projetos conforme abaixo:
I. Fornece uma interface para a criação de famílias de objetos relacionados ou dependentes sem especificar suas classes concretas.
II. Converte a interface de uma classe em outra interface esperada pelos clientes permitindo que certas classes trabalhem em conjunto, pois de outra forma, seria impossível por causa de suas interfaces incompatíveis.
III. Fornece uma maneira de acessar sequencialmente os elementos de uma agregação de objetos sem expor sua representação subjacente.
Os padrões de projeto apresentados em I, II e III são, respectivamente:
a) Façade, Builder e Mediator.
b) Abstract Factory, Adapter e Iterator.
c) Façade, Adapter e Interpreter.
d) Singleton, Builder e Mediator.
e) Abstract Factory, Prototype e Iterator.
Questão 2
(TRE-AP /2007)
Considerando a figura acima, que apresenta um diagrama de relacionamento entre os padrões de projeto descritos no livro GoF Book, julgue os próximos itens acerca dos conceitos de programação orientada a objetos e padrões de projetos orientados a objetos.
I. A implementação de padrões de projeto criacionais em linguagens como C#, Delphi e Java sempre envolverá a alocação de memória para a criação de objetos.
II. A implementação de montadores de árvores sintáticas apóia-se mais no uso do padrão Singleton que no uso do padrão Composite.
III. A implementação de tratadores de eventos de interface gráfica apóia-se mais no uso do padrão Observer que no uso do padrão Visitor.
IV. A implementação de famílias portáveis de componentes de interface gráfica depende mais do emprego do padrão Chain of Responsibility que do padrão AbstractFactory.
V. O padrão TemplateMethod é mais simples que o padrão Memento.
Estão certos apenas os itens.
a) I, II e IV
b) I, III e V
c) I, IV e V
d) II, III e IV
e) II, III e V
Questão 3
(Petrobras/2010) Em um sistema de software para controlar pedidos para entrega em domicílio, deve haver uma funcionalidade que permita que o atendente solicite a repetição de um pedido anteriormente feito por um cliente. O gerente do restaurante informou que essa funcionalidade aumentaria a agilidade no atendimento aos clientes, visto que muitos deles tendem a fazer pedidos similares aos que já fizeram anteriormente. Ao usar essa funcionalidade, o atendente do restaurante seleciona um pedido cuja composição corresponde a produtos normalmente requisitados pelos clientes e solicita ao sistema a construção de um novo pedido igual ao selecionado. Esse novo pedido pode, então, ser alterado pelo atendente se o cliente solicitar a adição de novos produtos do cardápio, por exemplo. Portanto, a parte principal dessa funcionalidade corresponde a criar uma cópia de um pedido a partir de pedido preexistente. Na implementação dessa funcionalidade, seu desenvolvedor deve utilizar qual padrão de projeto do catálogo GoF (Gang of Four), dentre os listados abaixo?
a) Builder.
b) Factory Method.
c) Command.
d) Abstract Factory.
e) Prototype.
Questão 4
(Petrobras/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?
a) Singleton.
b) Decorator.
c) Interpreter.
d) Template Method.
e) Observer.
Questão 5
(INMETRO/2015) Em padrões de projeto, delegação é uma maneira de tornar a composição tão poderosa para fins de reutilização quanto à herança, sendo que dois objetos são envolvidos no tratamento de uma solicitação. É uma boa escolha de projeto somente quando ela simplifica mais o que complica. Ao definir quais padrões deverão ser utilizados no projeto, considerando que diversos padrões de projeto usam delegação, mas três padrões dependem dela. Assinale-os.
a) State, Strategy e Visitor.
b) Adapter, Bridge e Composite.
c) Builder, Prototype e Singleton.
d) Façade, Command e Decorator.
e) Factory Method, Interpreter e Template Method.
Questão 6
(INMETRO/2015) De acordo com o padrão orientado a objeto, é necessário determinar um padrão de projeto a ser utilizado em certa situação. O padrão escolhido foi o Iterator. Cada padrão tem uma intenção para o qual foi desenvolvido e/ou criado.
Assinale, a seguir, a intenção do
a) Garantir que uma classe tenha somente uma instância e fornecer um ponto global de acesso para ela.
b) Fornecer um objeto representado, ou um marcador de outro objeto, para controlar o acesso ao mesmo.
c) Permitir que um objeto altere seu comportamento quando seu estado interno muda. O objeto parecerá ter mudado de classe.
d) Especificar os tipos de objetos a serem criados usando uma instância prototípica e criar novos objetos copiando esse protótipo.
e) Fornecer uma maneira de acessar, sequencialmente, os elementos de uma agregação de objetos sem expor a sua representação subjacente.
Questão 7
(INMETRO/2015) Um projeto de software orientado a objetos não é algo muito fácil. Mas, projetar software reutilizável, orientado a objetos, é ainda mais complicado. Muitas ações devem ser realizadas como: identificar objetos, separá‐los em classes, definir interfaces, entre outros. Normalmente, o projeto deve ser específico para aquele problema que se quer resolver, mas também genérico o suficiente para atender problemas e requisitos futuros. Os padrões de projeto tornam mais fácil a reutilização de projetos e arquiteturas bem sucedidas. Também ajudam a escolher alternativas de projeto que tornam um sistema reutilizável e a evitar alternativas que comprometam a reutilização. Os padrões de projeto podem ser classificados em: de criação, estruturais e comportamentais. Assinale, a seguir, um padrão de projeto da classe estrutural.
a) State.
b) Adapter.
c) Mediator.
d) Memento.
e) Chain of Responsability.
Questão 8
(MDA/2014) Em relação aos padrões de projeto, são exemplos de padrão de criação, padrão estrutural e padrão comportamental, respectivamente:
a) Abstract factory, bridge e observer.
b) Mediator, composite e facade.
c) Decorator, singleton ememento.
d) Prototype, adapter e composite.
e) Visitor, decorator e builter.
Questão 9
(CNMP/2015) Um Analista de Desenvolvimento de Sistemas do CNMP deve indicar o padrão de projeto mais adequado para ser aplicado na seguinte situação:
Uma aplicação que existe simultaneamente em um dispositivo móvel e no ambiente corporativo, necessita de um processo de sincronização entre as informações processadas no dispositivo móvel e na base corporativa. Ambas as aplicações devem se comunicar com um objeto que deve ser único para processar este sincronismo, a fim de evitar a possibilidade de criar dados na base.
O padrão de projeto corretamente indicado pelo Analista deve ser:
a) Factory Method, um padrão de criação, que busca definir o fluxo de um algoritmo em uma operação, postergando (deferring) alguns passos para subclasses, sem mudar a estrutura do mesmo.
b) Prototype, um padrão estrutural, que busca fornecer uma interface para criação de famílias de objetos relacionados ou dependentes sem especificar suas classes concretas.
c) Singleton, um padrão de criação, que busca garantir que um objeto terá apenas uma única instância, ou seja, uma classe irá gerar apenas um objeto e que este estará disponível de forma única para todo o escopo de uma aplicação.
d) Command, um padrão comportamental, que busca definir o fluxo de um algoritmo em uma operação, postergando (deferring) alguns passos para subclasses, sem mudar a estrutura do mesmo.
e) Façade, um padrão estrutural, que busca garantir que um objeto terá apenas uma única instância, ou seja, uma classe irá gerar apenas um objeto e que este estará disponível de forma única para todo o escopo de uma aplicação.
Questão 10
(SERPRO/2014) Os padrões GoF refletem situações muito recorrentes em projetos orientados a objetos. Esses padrões são classificados em três famílias: padrões de criação, padrões estruturais e padrões comportamentais. Considere os objetivos principais de alguns desses padrões, tais como:
I. produzir objetos utilizando uma estrutura de árvore para representar hierarquias de todo-parte, de forma a permitir que objetos do tipo todo ou do tipo parte sejam tratados da mesma maneira.
II. atribuir responsabilidades adicionais a um objeto de forma dinâmica, para atender a algumas situações em que seja desejado que um objeto tenha mais responsabilidades que os demais da sua classe.
III. prover uma interface única para um conjunto de interfaces de um subsistema, facilitando o seu uso, para atender a situações em que um conjunto de classes deve se comportar como um componente.
Os padrões cujos objetivos foram descritos em I, II e III são, respectivamente:
a) Abstract Factory, Prototype e Singleton, da família de padrões de criação.
b) Composite, Decorator e Facade, da família de padrões estruturais.
c) Template Method, State e Mediator, da família de padrões comportamentais.
d) Composite, Decorator e Facade, da família de padrões de criação.
e) Abstract Factory, Prototype e Singleton, da família de padrões estruturais.
RESPOSTAS
Questão 1 – B
Justificativa: • Abstract Factory -> “Prover uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas.” [GoF]
• 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.” [GoF]
• Iterator -> “Prover uma maneira de acessar os elementos de um objeto agregado sequencialmente sem expor sua representação interna.” [GoF]
Questão 2 – B
Justificativa: • A implementação de montadores de árvores sintáticas apóia-se mais no uso do padrão Singleton que no uso do padrão Composite. -> Errada. Seria no padrão Interpreter.
• A implementação de famílias portáveis de componentes de interface gráfica depende mais do emprego do padrão Chain of Responsibility que do padrão AbstractFactory. -> Errada, Seria no padrão AbstractFactory.
Questão 3 – E
Justificativa: Prototype: -> “Especificar os tipos de objetos a serem criados usando uma instância como protótipo e criar novos objetos ao copiar este protótipo.” [GoF]
Questão 4 – D
Justificativa: Template Method. -> “Definir o esqueleto de um algoritmo dentro de uma operação, deixando alguns passos a serem preenchidos pelas subclasses. Template Method permite que suas subclasses redefinam certos passos de um algoritmo sem mudar sua estrutura.”
Questão 5 – A
Justificativa: • State: -> Um objeto delega solicitações para um objeto State que representa o seu estado atual.
• Strategy -> Um objeto delega uma solicitação específica para um objeto que representa uma estratégia para executar a solicitação.
• Visitor: -> A operação que é executada em cada elemento da estrutura de um objeto é sempre delegada para o objeto Visitor.
Questão 6 – E
Justificativa: O objetivo do padrão Iterator é “Prover uma maneira de acessar os elementos de um objeto agregado sequencialmente sem expor sua representação interna.” [Gof]
Questão 7 – B
Justificativa: Classificação dos padrões apresentados nas opções:
Padrão Comportamental: State, Mediator, Memento, Chain of Responsability;
Padrão Estrutural: Adapter;
Questão 8 – A
Justificativa: • Padrões Criacionais:
o Abstract Factory
o Builder
o Factory Method
o Prototype
o Singleton
• Padrões Estruturais:
o Adapter
o Bridge
o Composite
o Decorator
o Façade
o Flyweight
o Proxy
• Padrões Comportamentais:
o Chain of Responsibility
o Command
o Interpreter
o Iterator
o Mediator
o Memento
o Observer
o State
o Strategy
o Template Method
o Visitor
Questão 9 – C
Justificativa: O objetivo do padrão Singleton é “Garantir que uma classe só tenha uma única instância, e prover um ponto de acesso global a ela.” [GoF]
Questão 10 – B
Justificativa: • Composite -> “Compor objetos em estruturas de árvore para representar hierarquias todo-parte. Composite permite que clientes tratem objetos individuais e composições de objetos de maneira uniforme.“ [GoF].
• Decorator -> “Anexar responsabilidades adicionais a um objeto dinamicamente. Decorators oferecem uma alternativa flexível ao uso de herança para estender uma funcionalidade.” [GoF].
• Facade -> “Oferecer 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.” [GoF].
• Abstract Factory, Prototype e Singleton, não são da família de padrões estruturais, mas criacionais.
• Composite, Decorator e Facade, não são da família de padrões de criação, mas estruturais.
Material retirado da Web.
Se você tiver alguma dúvida ou correção a fazer, por favor, comente! Obrigado!