AV – PADRÕES DE PROJETOS DE SOFTWARE COM JAVA
1 - O padrão Abstract Factory é usado em sistemas de automação residencial para criar
diversos dispositivos inteligentes, como lâmpadas e termostatos, sem depender de
implementações específicas. Isso facilita a integração de novos dispositivos. Qual é a
principal função do padrão Abstract Factory neste sistema?
A) Garante a existência de apenas uma instância de uma classe.
B) Constrói objetos complexos de forma sequencial.
C) Permite a clonagem de objetos mantendo suas propriedades.
D) Cria famílias de objetos sem especificar suas classes concretas.
E) Centraliza a gestão de operações de vários objetos.
2 - Analise a estratégia de solução a seguir: "Implementar uma operação clone em cada
produto concreto a ser instanciado, permitindo que um módulo cliente crie uma nova
instância por meio da criação de uma réplica de um objeto já existente". Assinale a
alternativa com o nome do padrão que define essa estratégia:
A. Abstract Factory
B. Factory Method
C. Singleton
D. Prototype
E. Builder
3 - O ferramental do JPA oferece diversos componentes, com finalidades específicas,
no âmbito da persistência de dados, oferecendo um caminho comum para o
mapeamento objeto-relacional. Qual componente, oferecido pelo JPA, é responsável
pelo manuseio das diversas entidades?
A - EntityManager.
B - EntityManagerFactory.
C - Transaction.
D - Entity.
E - Column
4 - Adicionar um novo fornecedor externo para um serviço já utilizado por um sistema,
através da integração de um módulo que converta uma requisição de uma interface
conhecida pelo sistema para a interface proprietária fornecida pelo componente
externo, é uma aplicação de qual padrão?
A) Bridge
B) Facade
C) Proxy
D) Adapter
E) Flyweight
5 - O padrão Command permite desfazer ou refazer ações de um comando do usuário
(undo/redo). Outro padrão pode salvar o estado anterior para restaurar durante undo.
Qual é esse padrão?
A - Observer
B - Visitor
C- Command
D- Memento
E- State
6 - Um sistema utiliza expressões matemáticas definidas pelo usuário para
parametrizar cálculos. A gramática define as regras dessas expressões, que devem ser
transformadas em uma árvore de sintaxe abstrata para processamento. Qual padrão
oferece uma solução para essa transformação?
A - Iterator
B - Strategy
C - Interpreter
D - Memento
E - State
7 - Escolha a opção que identifica o padrão GRASP, que sugere delegar uma
responsabilidade à classe que contém o conhecimento necessário para executá-la. Isso
previne a criação de classes de negócio que apenas possuam operações de acesso,
como os métodos get/set dos seus atributos.
A) Especialista na Informação
B) Indireção
C) Memento
D) Fábrica
E) Controlador
8 - Os padrões arquiteturais definem os componentes estruturais de um sistema e a
forma de comunicação entre eles, ou com outros sistemas, organizando as diretrizes
gerais para a concepção de aplicativos com perfis funcionais específicos. Plataformas
de objetos distribuídos, como o CORBA, utilizam diferentes padrões arquiteturais, tais
como:
A - Event-Driven
B - Broker
C - MVC
D - Pipeline
E - PAC.
9 - Marque a alternativa que apresenta dois padrões com estrutura semelhante, mas
propósitos diferentes:
A - Proxy e Adapter
B - Adapter e Composite
C - Adapter e Decorator
D - Composite e Decorator
E - Proxy e Composite
10 - Selecione a alternativa com a afirmação CORRETA sobre o padrão Controlador:
A) O módulo Controlador centraliza a interação do usuário, capturando eventos externos
e controlando o fluxo de navegação.
B) O módulo Controlador centraliza a lógica de negócio ou de um caso de uso.
C) O módulo Controlador coordena os módulos que produzem respostas a eventos
lógicos gerados pela interface do usuário.
D) O padrão Controlador do GRASP é equivalente ao padrão GoF Strategy.
E) Em uma aplicação Java web, o módulo controlador pode ser implementado como um
servlet.
Gabarito:
1. D - Cria famílias de objetos sem especificar suas classes concretas: O padrão
Abstract Factory facilita a criação de dispositivos inteligentes sem depender de
implementações específicas.
2. D - Prototype: Permite criar novas instâncias por meio da clonagem de objetos
existentes.
3. A - EntityManager: Responsável pelo gerenciamento das entidades no JPA.
4. D - Adapter: Converte uma interface conhecida para a interface proprietária de
um componente externo.
5. D - Memento: Salva o estado anterior de um objeto para permitir sua restauração
posterior.
6. C - Interpreter: Transforma expressões em árvores de sintaxe abstrata para
processamento.
7. A - Especialista na Informação: Delegar responsabilidades à classe que possui o
conhecimento necessário para executá-las.
8. B - Broker: Utilizado em plataformas de objetos distribuídos, como o CORBA.
9. D - Composite e Decorator: Padrões com estruturas semelhantes, mas
propósitos diferentes.
10. B - O módulo Controlador centraliza a lógica de negócio ou de um caso de uso:
Essa é a definição correta do padrão Controlador.
AV – PADRÕES DE PROJETOS DE SOFTWARE COM JAVA
1 - Assinale a alternativa que indica o padrão GRASP recomendado para atribuir uma
responsabilidade à classe que possui o conhecimento necessário para realizá-la. Esse
padrão evita a definição de classes de negócio que contenham apenas operações de
acesso, como get/set dos seus atributos.
A) Especialista na Informação
B) Indireção
C) Memento
D) Fábrica
E) Controlador
2 - Analise o seguinte propósito: "Permitir que um único processo de construção possa
ser utilizado para construir diferentes representações de um objeto complexo ao
implementar a representação do objeto e o processo da sua construção em classes
separadas." Assinale a alternativa com o nome do padrão que possui esse propósito:
A - Abstract Factory D - Prototype
B - Factory Method E - Builder
C - Singleton
3 - Possibilitar a manipulação de objetos individuais e de agregados de uma estrutura
hierárquica (árvore) de objetos por meio do mesmo conjunto de operações, sem que
o módulo cliente precise fazer a distinção entre o tipo do objeto manipulado
(individual ou agregado). Assinale a alternativa com o nome do padrão que possui esse
propósito:
A - Proxy D - Flyweight
B - Composite E – Adapter
C - Bridge
4 - Conseguir adicionar um novo fornecedor externo de um serviço já utilizado por um
sistema, apenas adicionando um módulo que seja capaz de converter uma requisição
de uma interface conhecida pelo sistema para a interface proprietária fornecida pelo
componente externo é um dos efeitos obtidos com a aplicação de qual padrão?
a) Bridge d) Adapter
b) Facade e) Flyweight
c) Proxy
5 - Você está desenvolvendo um sistema que produz informações guardadas em um
ou mais objetos que só devem ser armazenados em um banco de dados após o
processamento ser concluído. Entretanto, esses dados estão vinculados a uma sessão
de usuário, que pode ser interrompida em função de problemas de conexão. Esse
padrão oferece uma solução que permite que um objeto A capture e salve todo o
estado de um objeto B da sessão, sem que A tenha que quebrar o encapsulamento de
B, tornando possível a restauração do estado do objeto B, a partir de um estado
capturado anteriormente por A. Assinale a alternativa com o nome do padrão que
corresponde a essa estratégia de solução:
a) Command d) Strategy
b) Mediator e) Observer
c) Memento
6 - As mensagerias são um ferramental de ampla utilização em ambientes corporativos,
e entre os diferentes tipos de EJBs, os MDBs são os componentes responsáveis pelo
comportamento assíncrono do sistema, baseado na utilização de mensagerias.
Assinale a alternativa correta com relação aos Message Driven Beans, ou MDBs:
a) Eles podem guardar informações de estado.
b) São definidos pela anotação Message.
c) Tratam as mensagens através de seu único método, denominado onMessage.
d) Necessitam de interfaces Local e Remote.
e) Precisam implementar a interface SessionListener.
7 - Ao trabalhar com um aplicativo corporativo, segundo a arquitetura MVC, ocorre
uma divisão natural das camadas, em termos dos projetos internos, ficando a camada
View sob responsabilidade do projeto com terminador "war" . A interface padrão,
conforme o próprio terminador indica, é um aplicativo Java Web, sendo comum a
implementação de um padrão de desenvolvimento para centralizar o tratamento das
requisições, bem como redirecionar para a visualização correta, após efetuar as
chamadas para a camada Controller. De qual padrão estamos falando, e qual o
componente deve implementá-lo?
a) Padrão de desenvolvimento Facade e componente do tipo EJB.
b) Padrão de desenvolvimento Front Controller e componente do tipo Servlet.
c) Padrão de desenvolvimento DAO e componente do tipo JPA.
d) Padrão de desenvolvimento Service Locator e componente do tipo JNDI.
e) Padrão de desenvolvimento Flyweight e componente do tipo EJB.
8 - Assinale a alternativa com a afirmação CORRETA sobre o padrão Controlador.
A. O módulo Controlador centraliza a interação do usuário com o sistema, capturando
os eventos externos e controlando o fluxo de navegação das telas e janelas do
sistema.
B. O módulo Controlador centraliza o código relacionado à lógica de negócio do sistema
ou de um caso de uso.
C. O módulo Controlador coordena e controla os módulos responsáveis pela produção
da resposta a eventos lógicos de sistema gerados pela camada de interface com o
usuário.
D. O padrão Controlador proposto pelo GRASP equivale ao padrão GoF Strategy.
E. Em uma aplicação Java web, o módulo controlador pode ser implementado como
um servlet.
Gabarito:
1. A - Especialista na Informação: Delegar responsabilidades à classe que possui o
conhecimento necessário para realizá-las.
2. E - Builder: Permite construir diferentes representações de um objeto complexo
separando o processo de construção.
3. B - Composite: Manipula objetos individuais e agregados de forma uniforme em
uma estrutura hierárquica.
4. D - Adapter: Converte uma interface conhecida para a interface proprietária de
um componente externo.
5. C - Memento: Salva o estado de um objeto para permitir sua restauração
posterior.
6. C - Tratam as mensagens através de seu único método, denominado
onMessage: Os MDBs utilizam o método onMessage para tratar mensagens de
forma assíncrona.
7. B - Front Controller e componente do tipo Servlet: Centraliza o tratamento de
requisições e redireciona para a visualização correta.
8. B - O módulo Controlador centraliza o código relacionado à lógica de negócio
do sistema ou de um caso de uso: Essa é a definição correta do padrão
Controlador.
AV – PADRÕES DE PROJETOS DE SOFTWARE COM JAVA
1 - Que padrão pode ser utilizado para garantir que apenas uma instância de uma
fábrica (Abstract Factory) seja criada na execução de um processo?
a) Singleton
b) Factory Method
c) Builder
d) Abstract Factory
e) Prototype
2 - Você deseja criar um objeto complexo formado por diferentes partes. Para isso,
você define uma interface abstrata responsável com operações representando a
criação dessas partes, permitindo que as implementações concretas dessa interface
criem diferentes representações dessas partes. Qual padrão de projeto você utilizaria
nessa situação?
a) Factory Method
b) Builder
c) Singleton
d) Abstract Factory
e) Prototype
3 - Um colega seu de trabalho está implementando a interface com o usuário de um
sistema que dispara a execução de uma lógica de negócio envolvendo vários objetos.
Ele implementa uma primeira versão que faz diversas chamadas a objetos da lógica de
negócio porque não existe uma interface de mais alto nível disponível que encapsule
esta complexidade. Para piorar, ao implementar um segundo módulo de interface com
o usuário, ele se depara com o mesmo problema, tendo que copiar e colar partes da
lógica utilizadas no primeiro módulo de interface com o usuário. Ao revisar o código
feito pelo seu colega, qual padrão você recomendaria que ele utilizasse para diminuir
o acoplamento entre os módulos de interface com o usuário e módulos referentes à
lógica de negócio?
a) Adapter
b) Proxy
c) Composite
d) Facade
e) Flyweight
4 - Esse padrão implementa uma lista encadeada de objetos, em que cada objeto pode
realizar o processamento de uma requisição ou repassá-la para o próximo objeto da
sequência, de forma similar à dinâmica de tratamento de exceções no Java. Assinale a
alternativa com o nome do padrão descrito no enunciado:
a) Visitor
b) Chain of Responsibility
c) Mediator
d) Iterator
e) Command
5 - Assinale o padrão que utiliza uma fábrica de objetos de modo a gerenciar a
instanciação e o compartilhamento de objetos imutáveis utilizados em larga escala em
um sistema:
a) Flyweight
b) Proxy
c) Composite
d) Facade
e) Adapter
6 - Seja um sistema que utilize expressões matemáticas definidas pelo usuário para
possibilitar a parametrização de cálculos. Existe uma gramática que define as regras de
formação dessas expressões. Você precisa transformar expressões textuais expressas
nessa gramática em uma árvore de sintaxe abstrata, que será o ponto de partida para
o processamento dessas expressões. Assinale a alternativa com o nome do padrão que
oferece uma solução para a transformação dessas expressões textuais em uma árvore
de sintaxe abstrata:
a) Memento
b) Interpreter
c) Iterator
d) State
e) Strategy
7 - Assinale a alternativa com a afirmação CORRETA sobre o padrão Controlador.
a) O padrão Controlador proposto pelo GRASP equivale ao padrão GoF Strategy.
b) O módulo Controlador centraliza o código relacionado à lógica de negócio do
sistema ou de um caso de uso.
c) O módulo Controlador centraliza a interação do usuário com o sistema,
capturando os eventos externos e controlando o fluxo de navegação das telas e
janelas do sistema.
d) O módulo Controlador coordena e controla os módulos responsáveis pela
produção da resposta a eventos lógicos de sistema gerados pela camada de
interface com o usuário.
e) Em uma aplicação Java web, o módulo controlador pode ser implementado como
um servlet.
8 - Veja o código a seguir e assinale a alternativa com o tipo de acoplamento existente
entre a classe Exemplo e a classe Lâmpada.
public class Lampada {
public static final int LIGAR = 1;
public static final int DESLIGAR = 0;
public realizarOperacao(int codigo) {
switch(codigo) {
case LIGAR:
// executa procedimento para ligar a lâmpada
break;
case DESLIGAR:
// executa procedimento para ligar a lâmpada
break;
}
}
public class Exemplo {
public static void main(String [] args) {
Lampada lampada = new Lampada(); [Link]([Link]);
}
}
a) Acoplamento Externo.
b) Acoplamento de Estrutura.
c) Acoplamento Funcional.
d) Acoplamento de Controle.
e) Acoplamento Global.
9 - A arquitetura oferecida pelo JPA modificou a forma do Java lidar com os dados, e o
conhecimento acerca de suas características é fundamental para todo programador
que utilize a plataforma. Assinale a alternativa acerca do JPA: INCORRETA
a) Com a adoção do JPA eliminamos a necessidade do JDBC.
b) Permite mapear os relacionamentos da base de dados.
c) Precisa de um arquivo de configuração denominado [Link].
d) É o mecanismo padrão de ORM do Java.
e) Trabalha com código anotado Java.0 -
10 - Uma mudança essencial no modelo de programação Java, com a evolução do JEE,
foi o uso de anotações nas diversas tarefas de configuração dos EJBs do aplicativo. Para
que serve a anotação no ambiente de criação de EJBs
a) Local Definir um contexto de persistência local para o Session Bean.
b) Definir um Stateful Session Bean.
c) Definir a interface de acesso local ao pool de EJBs.
d) Definir a interface de acesso às entidades do JPA.
e) Definir um Stateless Session Bean.
Gabarito:
1. A - Singleton: Garante que apenas uma instância de uma fábrica seja criada
durante a execução de um processo.
2. B - Builder: Permite criar objetos complexos separando a construção de suas
partes.
3. D - Facade: Encapsula a complexidade da lógica de negócio em uma interface
de alto nível.
4. B - Chain of Responsibility: Implementa uma lista encadeada de objetos para
processar requisições.
5. A - Flyweight: Gerencia objetos imutáveis compartilhados em larga escala.
6. B - Interpreter: Transforma expressões textuais em árvores de sintaxe abstrata
para processamento.
7. B - O módulo Controlador centraliza o código relacionado à lógica de negócio
do sistema ou de um caso de uso: Essa é a definição correta do padrão
Controlador.
8. D - Acoplamento de Controle: Refere-se ao controle direto sobre o fluxo de
execução entre classes.
9. A - Com a adoção do JPA eliminamos a necessidade do JDBC: Essa afirmação
está incorreta, pois o JPA utiliza o JDBC para comunicação com o banco de
dados.
10. E - Definir um Stateless Session Bean: A anotação é usada para configurar um
EJB sem estado.
AV – PADRÕES DE PROJETOS DE SOFTWARE COM JAVA
1 - Segundo Metsker, o padrão de projeto GoF _________________ é aplicado para
substituir a geração de instâncias não-inicializadas de uma classe, fornecendo novos
objetos a partir de uma classe-exemplo. (Ref.: 202001761219)
a) BUILDER
b) FACTORY METHOD.
c) SINGLETON.
d) MEDIATOR.
e) PROTOTYPE
2 - Qual padrão estrutural permite que um objeto utilize serviços de outros objetos
com interfaces diferentes por meio de uma interface única: (Ref.: 202002251505)
a) Facade
b) Adapter
c) Flyweight
d) Composite
e) Bridge
3 - O presidente de uma empresa determinou que fosse disponibilizado um sistema de
vendas na Internet. No entanto, o software de controle de estoque que deve ser
acessado pela aplicação de vendas é muito antigo e provê uma API (Application
Programming Interface) de uso muito complicado. Para que os desenvolvedores
possam acessar uma interface mais simples, o arquiteto do sistema pode determinar
o uso do padrão de projeto
a) Façade.
b) Prototype.
c) Observer.
d) Decorator.
e) Flyweight.
4 - Qual padrão se define uma dependência um-para-muitos entre objetos de forma
que quando o objeto muda de estado todos os seus dependentes são notificados e
atualizados automaticamente? (Ref.: 202002566843)
a) State.
b) Memento.
c) Nenhuma das anteriores.
d) Chain of Responsability.
e) Observer
5 - (UNEAL - COPEVE 2010) Definir um objeto que encapsula a forma como um conjunto
de objetos interage. Promove o acoplamento fraco ao evitar que os objetos se refiram
uns aos outros explicitamente. Qual opção abaixo corresponde à descrição anterior?
(Ref.: 202002430061)
a) Intenção do padrão de projeto command
b) Intenção do padrão de projeto mediator
c) Intenção do padrão de projeto strategy
d) Intenção do padrão de projeto composite
e) Intenção do padrão de projeto proxy
6 - O padrão de projeto que deve ser utilizado não somente quando o comportamento
de um objeto depende do seu estado, podendo ser alterado em tempo de execução,
mas também quando a funcionalidade de um objeto possui condicionais grandes,
chama-se: (Ref.: 202002389858)
a) Interpreter;
b) State;
c) Visitor ;
d) Strategy;
e) Proxy
7 - Pode-se sucintamente definir o padrão Variation do GRASP como: (Ref.:
202002235782)
a) Criar classes controladoras.
b) Criar classes altamente coesas.
c) Criar classes que permitam sobrecarga e sobreescrita.
d) Criar camadas para melhor organizar a aplicação. Baixa Coesão
e) Criar classe que resolva problemas de inconsistência, criando adaptações para
saná-las
8 - Num determinado setor de uma empresa fictícia existem 5 (cinco) funcionários
contratados. Todos os funcionários são contratados com a mesma carga horária de
trabalho prevista. Dois dos cinco funcionários produzem o triplo do que produzem os
outros colegas de trabalho, pois além de concluir as tarefas diárias de sua própria
responsabilidade, também executam as tarefas que não são concluídas pelos outros
colegas. Ao final do expediente é possível observar que os dois funcionários que mais
trabalham apresentam maior desgaste físico e mental, pois sempre ficam
sobrecarregados com responsabilidades extras. Fazendo uma analogia com o cenário
descrito acima, responda qual característica de Projeto O.O. explicaria a situação que
ocorre quando uma má distribuição de responsabilidades entre 5 classes afeta a
colaboração entre os objetos, concentrando responsabilidades demais em somente 2
dessas classes. (Ref.: 202002438276)
a) Baixa Coesão
b) Elevado Acoplamento
c) Elevada Herança Baixo
d) Encapsulamento
e) Elevado Polimorfismo
9 - O padrão Variações protegidas tem como característica: (Ref.: 202001770819)
a) 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.
b) É 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.
c) é 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.
d) 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) 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.
Gabarito:
1. E - Prototype: Substitui a geração de instâncias não-inicializadas de uma classe,
fornecendo novos objetos a partir de uma classe-exemplo.
2. B - Adapter: Permite que um objeto utilize serviços de outros objetos com
interfaces diferentes por meio de uma interface única.
3. A - Façade: Simplifica o acesso a uma API complexa, encapsulando sua
complexidade em uma interface de alto nível.
4. E - Observer: Define uma dependência um-para-muitos, notificando
automaticamente os dependentes quando o estado do objeto muda.
5. B - Mediator: Encapsula a forma como um conjunto de objetos interage,
promovendo o acoplamento fraco.
6. B - State: Utilizado quando o comportamento de um objeto depende do seu
estado, permitindo alterações em tempo de execução.
7. E - Criar classe que resolva problemas de inconsistência, criando adaptações
para saná-las: Definição sucinta do padrão Variation do GRASP.
8. A - Baixa Coesão: Explica a má distribuição de responsabilidades, concentrando-
as em poucas classes.
9. B - É um princípio básico para fornecer flexibilidade e proteção contra variações
em um projeto orientado a objetos.
AV – PADRÕES DE PROJETOS DE SOFTWARE COM JAVA
1 - A classe [Link] é um exemplo da aplicação de que padrão de projeto?
a) Singleton
b) Factory Method
c) Builder
d) Abstract Factory
e) Prototype
2 - Sobre o padrão Composite, assinale a alternativa correta:
a) Esse padrão é utilizado na composição de adaptadores para serviços
implementados por componentes de terceiros.
b) Esse padrão é apropriado para situações em que operações sobre o todo não
devam ser aplicadas de forma recursiva às suas partes.
c) O conceito de polimorfismo não está presente na solução proposta pelo padrão.
d) Esse padrão permite manipular agregados e seus elementos com uma interface
uniforme, isto é, com as mesmas operações.
e) Esse padrão é orientado para construção e manipulação de grafos cíclicos de
objetos.
3 - Você está desenvolvendo um sistema que produz informações guardadas em um
ou mais objetos que só devem ser armazenados em um banco de dados após o
processamento ser concluído. Entretanto, esses dados estão vinculados a uma sessão
de usuário, que pode ser interrompida em função de problemas de conexão. Esse
padrão oferece uma solução que permite que um objeto A capture e salve todo o
estado de um objeto B da sessão, sem que A tenha que quebrar o encapsulamento de
B, tornando possível a restauração do estado do objeto B, a partir de um estado
capturado anteriormente por A.
Assinale a alternativa com o nome do padrão que corresponde a essa estratégia de
solução:
a) Command
b) Memento
c) Observer
d) Mediator
e) Strategy
4 - Assinale a alternativa que apresenta os níveis de acoplamento entre módulos
ordenados do mais baixo para o mais alto:
a) Estrutura - Dados - Controle - Conteúdo - Global - Externo
b) Dados - Controle - Estrutura - Externo - Conteúdo – Global
c) Dados - Estrutura - Controle - Externo - Global - Conteúdo
d) Dados - Estrutura - Externo - Controle - Conteúdo - Global
e) Estrutura - Dados - Controle - Global - Externo – Conteúdo
5 - Uma mudança essencial no modelo de programação Java, com a evolução do JEE,
foi o uso de anotações nas diversas tarefas de configuração dos EJBs do aplicativo. Para
que serve a anotação Local no ambiente de criação de EJBs?
a) Definir um Stateful Session Bean.
b) Definir um contexto de persistência local para o Session Bean.
c) Definir um Stateless Session Bean.
d) Definir a interface de acesso local ao pool de EJBs.
e) Definir a interface de acesso às entidades do JPA.
6 - Analise o propósito a seguir: ''Implementar a instanciação de objetos utilizando
uma estrutura de herança, em que a superclasse define uma operação de criação de
um produto genérico, e cada subclasse define a implementação dessa operação,
criando um produto específico derivado do produto genérico definido na superclasse''.
Assinale a alternativa com o nome do padrão que possui esse propósito:
a) Singleton
b) Prototype
c) Builder
d) Abstract Factory
e) Factory Method
7 - Implementar um componente para cada fornecedor de um determinado serviço,
supondo que possamos ter diferentes fornecedores com APIs proprietárias para esse
serviço utilizado pelo nosso sistema, de modo que esse componente converta uma
requisição genérica do serviço utilizado pelos módulos clientes do sistema em
chamadas específicas da API do fornecedor externo. Essa descrição corresponde à
estrutura de solução de qual padrão?
a) Adapter
b) Facade
c) Prototype
d) Flyweight
e) Composite
8 - "Na implementação de um processo complexo, um módulo A chama operações de
um módulo B e de um módulo C. B, por sua vez, chama operações de C e de D. O
módulo C chama operações de A e de E. O módulo D chama operações dos módulos B
e C". Esse cenário ilustra uma interação entre objetos no estilo muitos para muitos.
Para simplificar esse processo, define-se um objeto que centraliza todas as interações
entre esses objetos, de modo que eles passam a se comunicar apenas com esse
elemento central. Dessa forma, o elemento central X passa a receber uma notificação
de A, para então chamar operações de B e C. Da mesma maneira, a partir de uma
notificação enviada por B, X chama operações de C e de D.
Essa descrição corresponde à estrutura de solução de qual padrão?
a) Chain of Responsibility
b) Template Method
c) Strategy
d) Mediator
e) Visitor
9 - Assinale a alternativa que contém tipos de coesão de um módulo em ordem do tipo
de coesão mais baixa para a mais alta:
a) Procedural - Sequencial - Comunicação
b) Procedural - Lógica - Funcional
c) Lógica - Coincidente - Sequencial
d) Coincidente - Temporal - Sequencial
e) Temporal - Lógica – Procedural
10 - Ao trabalhar com um aplicativo corporativo, segundo a arquitetura MVC, as
camadas Model e Controller são definidas ao nível do projeto interno com o
terminador "ejb", e o NetBeans oferece ferramentas de automatização para a geração
dos componentes necessários, com utilização de duas tecnologias específicas. Quais
são as tecnologias utilizadas para as duas camadas citadas, respectivamente?
a) JSP e Servlet
b) JPA e EJB
c) EJB e Servlet
d) Servlet e JPA
e) JPA e JSP
Gabarito:
1 - A - Singleton: A classe [Link] é um exemplo do padrão Singleton,
garantindo que apenas uma instância seja criada.
2 - D - Esse padrão permite manipular agregados e seus elementos com uma interface
uniforme, isto é, com as mesmas operações.
3 - B - Memento: Permite capturar e salvar o estado de um objeto para restaurá-lo
posteriormente, sem quebrar o encapsulamento.
4 - C - Dados - Estrutura - Controle - Externo - Global - Conteúdo: Ordem correta dos
níveis de acoplamento do mais baixo para o mais alto.
5 - D - Definir a interface de acesso local ao pool de EJBs: A anotação Local é usada
para isso no ambiente de criação de EJBs.
6 - E - Factory Method: Implementa a instanciação de objetos utilizando uma estrutura
de herança, onde subclasses definem a criação de produtos específicos.
7 - A - Adapter: Converte uma requisição genérica em chamadas específicas para APIs
de fornecedores externos.
8 - D - Mediator: Centraliza as interações entre objetos, simplificando a comunicação
em cenários complexos.
9 - D - Coincidente - Temporal - Sequencial: Ordem correta dos tipos de coesão de um
módulo, do mais baixo para o mais alto.
10 - B - JPA e EJB: Tecnologias utilizadas para as camadas Model e Controller,
respectivamente, na arquitetura MVC.
AV – PADRÕES DE PROJETOS DE SOFTWARE COM JAVA
1 - Você precisa implementar um módulo que leia um arquivo RTF (Rich Text Format)
e converta seu conteúdo em diferentes formatos (ASCII, TeX, HTML etc.). Sabendo que
o arquivo é composto por diferentes partes (texto, formatação, figuras etc.), qual dos
padrões seria mais indicado para isolar o conversor das diferentes formas de
representação do conteúdo gerado?
a) Singleton
b) Prototype
c) Abstract Factory
d) Builder
e) Factory Method
2 - Conseguir adicionar um novo fornecedor externo de um serviço já utilizado por um
sistema, apenas adicionando um módulo que seja capaz de converter uma requisição
de uma interface conhecida pelo sistema para a interface proprietária fornecida pelo
componente externo é um dos efeitos obtidos com a aplicação de qual padrão?
a) Facade
b) Flyweight
c) Bridge
d) Adapter
e) Proxy
3 - "Esse padrão encapsula uma requisição em um objeto, desacoplando o requisitante
e o objeto executor. Esse encapsulamento permite registrar o histórico de requisições,
reproduzir essas requisições em outro ambiente, bem como implementar operações
de desfazer ou refazer o processamento associado à requisição". Assinale a alternativa
com o nome do padrão que possui esse propósito:
a) Mediator
b) Command
c) Template Method
d) Iterator
e) Chain of Responsibility
4 - "Ao invés de colocarmos o cálculo do frete de um pedido na classe Pedido, optamos
por criar uma hierarquia de classes para encapsular os diferentes algoritmos de cálculo
de frete que temos no sistema". Assinale a alternativa com o nome do padrão GRASP
que recomenda a criação de classes que não representam diretamente elementos
concretos encontrados no domínio no negócio, seguindo uma decomposição de
responsabilidades por comportamento e não por representação, como a descrita no
cálculo do frete.
a) Indireção.
b) Especialista na Informação.
c) Polimorfismo.
d) Invenção Pura.
e) Acoplamento Baixo.
5 - O ferramental do JPA oferece diversos componentes, com finalidades específicas,
no âmbito da persistência de dados, oferecendo um caminho comum para o
mapeamento objeto-relacional. Qual componente, oferecido pelo JPA, é responsável
pelo manuseio das diversas entidades?
a) Column
b) EntityManager
c) EntityManagerFactory
d) Transaction
e) Entity
6 - Analise o propósito a seguir: ''Permitir a criação de uma família de objetos
relacionados ou dependentes, de forma que o módulo cliente não precise conhecer os
objetos específicos das diferentes famílias, lidando apenas com as interfaces genéricas
dos produtos dessas famílias''. Assinale a alternativa com o nome do padrão que
possui esse propósito:
a) Prototype
b) Builder
c) Abstract Factory
d) Factory Method
e) Singleton
7 - Que padrão pode ser utilizado na implementação de uma estrutura hierárquica de
diretório, em que existam pastas que podem conter pastas ou arquivos, sendo que
algumas operações com as pastas devem ser aplicadas de forma recursiva aos
elementos que fazem parte dela, isto é, outras pastas e arquivos?
a) Facade
b) Adapter
c) Composite
d) Flyweight
e) Proxy
8 - Esse padrão define uma estrutura similar à de um esquema Publisher-Subscriber,
pois existe um Publisher detentor de um conjunto de informações e registra um
conjunto de objetos interessados em receber notificações de modificação desse
conjunto de informações, ou seja, do estado do Publisher. Ao ter o seu estado interno
modificado, o Publisher notifica os Subscribers que, por sua vez, executam algum
procedimento específico de tratamento dessa modificação. Assinale a opção com o
padrão correspondente à descrição acima:
a) Visitor
b) Template Method
c) Observer
d) Strategy
e) State
9 - Um módulo A contém operações como conversão de medidas, formatação de
valores monetários, remoção de espaços duplicados em strings e envio/recepção de
arquivos FTP. O módulo A possui coesão:
a) Sequencial.
b) Procedural.
c) Funcional.
d) Coincidente.
e) Temporal.
10 - Uma mudança essencial no modelo de programação Java, com a evolução do JEE,
foi o uso de anotações nas diversas tarefas de configuração dos EJBs do aplicativo. Para
que serve a anotação Local no ambiente de criação de EJBs?
a) Definir a interface de acesso às entidades do JPA.
b) Definir um contexto de persistência local para o Session Bean.
c) Definir a interface de acesso local ao pool de EJBs.
d) Definir um Stateful Session Bean.
e) Definir um Stateless Session Bean
Gabarito:
1. D - Builder: Isola o conversor das diferentes formas de representação do
conteúdo gerado.
2. D - Adapter: Converte uma interface conhecida para a interface proprietária de
um componente externo.
3. B - Command: Encapsula uma requisição em um objeto, permitindo
desfazer/refazer operações e registrar histórico.
4. D - Invenção Pura: Recomenda a criação de classes que encapsulam
comportamentos específicos, como o cálculo de frete.
5. B - EntityManager: Responsável pelo gerenciamento das entidades no JPA.
6. C - Abstract Factory: Permite a criação de famílias de objetos relacionados sem
expor suas classes concretas.
7. C - Composite: Implementa uma estrutura hierárquica onde operações podem
ser aplicadas recursivamente.
8. C - Observer: Define uma estrutura Publisher-Subscriber para notificar mudanças
de estado.
9. D - Coincidente: Refere-se à baixa coesão, com operações não relacionadas
agrupadas em um módulo.
10. C - Definir a interface de acesso local ao pool de EJBs: A anotação Local é usada
para isso no ambiente de criação de EJBs.
AV – PADRÕES DE PROJETOS DE SOFTWARE COM JAVA
1 - As mensagerias são um ferramental de ampla utilização em ambientes corporativos,
e entre os diferentes tipos de EJBs, os MDBs são os componentes responsáveis pelo
comportamento assíncrono do sistema, baseado na utilização de mensagerias.
Assinale a alternativa correta com relação aos Message Driven Benas, ou MDBs:
a) São definidos pela anotação @Message.
b) Tratam as mensagens através de seu único método, denominado onMessage.
c) Eles podem guardar informações de estado.
d) Precisam implementar a interface SessionListener.
e) Necessitam de interfaces @Local e @Remote.
2 - Padrões arquiteturais definem os componentes estruturais de um sistema, e a
forma de comunicação entre eles ou com outros sistemas, organizando as regras gerais
para a concepção de aplicativos com algum perfil funcional específico. Plataformas de
objetos distribuídos, como o CORBA, trabalham em um padrão arquitetural
denominado:
a) Pipeline
b) PAC
c) Event-Driven
d) Broker
e) MVC
3 - A arquitetura oferecida pelo JPA modificou a forma do Java lidar com os dados, e o
conhecimento acerca de suas características é fundamental para todo programador
que utilize a plataforma. Assinale a alternativa INCORRETA acerca do JPA:
a) Trabalha com código anotado Java.
b) Precisa de um arquivo de configuração denominado [Link].
c) Permite mapear os relacionamentos da base de dados.
d) Com a adoção do JPA eliminamos a necessidade do JDBC.
e) É o mecanismo padrão de ORM do Java.
4 - "Permitir que um módulo cliente acesse sequencialmente os objetos de uma
coleção, sem que esse módulo precise conhecer a representação interna dessa
coleção, ou seja, a coleção pode ser uma lista encadeada, um vetor, uma árvore, ou
qualquer outra estrutura". Assinale a alternativa com o nome do padrão que possui
esse propósito:
a) Template Method
b) Mediator
c) Iterator
d) Command
e) Observer
5 - Na implementação desse padrão, cada objeto de uma estrutura hierárquica deve
definir uma operação Accept, que recebe um objeto de uma classe X como parâmetro.
A classe X, por sua vez, implementa uma interface genérica Z, definindo uma operação
específica de tratamento para cada tipo de objeto que pertença à estrutura
hierárquica. Assinale a opção com o nome do padrão cuja estrutura de solução foi
descrita no enunciado.
a) Visitor
b) State
c) Strategy
d) Template Method
e) Observer
6 - Analise a estratégia de solução a seguir: ''Definir um construtor private e
implementar uma operação estática que retorna uma instância criada em uma
operação com escopo static e armazenada como um atributo static dentro da própria
classe''. Assinale a alternativa com o nome do padrão que define essa estratégia:
a) Factory Method
b) Builder
c) Singleton
d) Abstract Factory
e) Prototype
7 - Os iteradores de coleção em Java obtidos a partir da interface Collection são
implementados com a aplicação de qual padrão de projeto?
a) Builder
b) Factory Method
c) Prototype
d) Singleton
e) Abstract Factory
8 - Assinale o padrão que utiliza uma fábrica de objetos de modo a gerenciar a
instanciação e o compartilhamento de objetos imutáveis utilizados em larga escala em
um sistema:
a) Composite
b) Proxy
c) Facade
d) Adapter
e) Flyweight
9 - Assinale a alternativa com a afirmação CORRETA sobre o padrão Controlador.
a) O módulo Controlador centraliza a interação do usuário com o sistema,
capturando os eventos externos e controlando o fluxo de navegação das telas e
janelas do sistema.
b) O módulo Controlador coordena e controla os módulos responsáveis pela
produção da resposta a eventos lógicos de sistema gerados pela camada de
interface com o usuário.
c) O módulo Controlador centraliza o código relacionado à lógica de negócio do
sistema ou de um caso de uso.
d) Em uma aplicação Java web, o módulo controlador pode ser implementado como
um servlet.
e) O padrão Controlador proposto pelo GRASP equivale ao padrão GoF Strategy.
10 - Uma classe X acessa diretamente os atributos públicos de uma classe Y. Que tipo
de acoplamento existe entre X e Y?
a) Acoplamento de Estrutura
b) Acoplamento de Conteúdo
c) Acoplamento de Dados
d) Acoplamento Global
e) Acoplamento Externo
Gabarito:
1. B - Tratam as mensagens através de seu único método, denominado
onMessage: Os MDBs utilizam o método onMessage para tratar mensagens de
forma assíncrona.
2. D - Broker: O padrão Broker é utilizado em plataformas de objetos distribuídos,
como o CORBA.
3. D - Com a adoção do JPA eliminamos a necessidade do JDBC: Essa afirmação
está incorreta, pois o JPA utiliza o JDBC para comunicação com o banco de dados.
4. C - Iterator: Permite que um módulo cliente acesse sequencialmente os objetos
de uma coleção sem conhecer sua representação interna.
5. A - Visitor: Define uma operação Accept para cada objeto em uma estrutura
hierárquica, permitindo tratamento específico.
6. C - Singleton: Utiliza um construtor privado e uma operação estática para garantir
uma única instância da classe.
7. C - Prototype: Os iteradores de coleção em Java são implementados com o
padrão Prototype.
8. E - Flyweight: Gerencia a instanciação e o compartilhamento de objetos
imutáveis utilizados em larga escala.
9. C - O módulo Controlador centraliza o código relacionado à lógica de negócio
do sistema ou de um caso de uso: Essa é a definição correta do padrão
Controlador.
10. B - Acoplamento de Conteúdo: Refere-se ao acesso direto aos atributos públicos
de outra classe.