Logo Passei Direto
Buscar

Exercícios - Padrões de Projetos de Software com Java

User badge image
Lysmi Akon

em

Ferramentas de estudo

Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Exercício - Padrões de Projetos de Software Com Java
TEMA 2 - PADRÕES GOF DE CRIAÇÃO
1. Em um sistema de vendas online, o padrão Abstract Factory é utilizado para criar objetos relacionados a diferentes categorias de produtos, sem especificar suas classes concretas. Isso permite flexibilidade na adição de novas categorias de produtos. Qual é o propósito do padrão Abstract Factory neste contexto?
2. 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?
3. Analise a estratégia de solução a seguir: “Definir uma hierarquia de classes responsáveis pela instanciação de uma hierarquia paralela de classes de produtos, em que cada classe concreta é capaz de instanciar um produto específico de cada tipo definido em uma família de produtos”. Assinale a alternativa com o nome do padrão que define essa estratégia:
4. Reduzir a necessidade de criar hierarquias paralelas de classes ou de criar subclasses apenas para estanciar objetos específicos é um dos efeitos obtidos com a aplicação de qual padrão?
5. 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, crie em diferentes representações dessas partes. Qual padrão de projeto você utilizaria nessa situação?
6. Sobre o padrão Abstract Factory, assinale a alternativa correta:
7. 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 o 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:
8. Em um projeto de software para gestão de bibliotecas, o padrão Singleton é utilizado para garantir uma única instância do sistema de gerenciamento de usuários. Este padrão assegura que todas as operações de empréstimos e devolução de livros sejam gerenciadas de forma centralizada. Qual é a principal característica do padrão Singleton utilizada neste contexto?
TEMA 3 - PADRÕES GOF ESTRUTURAIS
1. 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 utilizada 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 os módulos referentes à lógica de negócio?
O padrão Facade é um padrão de projeto que provê uma interface simplificada para um conjunto de interfaces de um sistema. Ele encapsula a complexidade do sistema, permitindo que os clientes interajam com ele de forma mais simples. Neste caso , o padrão Facade poderia ser utilizado para diminuir o acoplamento entre os módulos de interface com o usuário e módulos referentes à lógica de negócio. O padrão Facade encapsularia a complexidade da lógica de negócio, permitindo que os módulos de interface com o usuário interajam com ela de forma mais simples.
2. Identifique no código a seguir o padrão que está sendo utilizado para ler o arquivo texto.
3. 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:
O padrão utiliza uma fábrica de objetos de modo a gerenciar a instância e o compartilhamento de objetos imutáveis utilizados em larga escala em um sistema.
4. Fornecer uma interface de alto nível para os módulos clientes acessarem um componente ou subsistema desacoplando os módulos clientes da estrutura interna do subsistema e reduzindo o número de elementos com os quais os módulos clientes precisam interagir para realizar um serviço. Assinale a alternativa com o nome do padrão que possui esse propósito:
O padrão Facade fornece uma interface de alto nível para módulos, clientes usarem um componente ou subsistema das acoplando os módulos clientes da estrutura interna do subsistema e reduzindo o número de elementos com os quais os módulos clientes precisam interagir para realizar um serviço.
5. Sobre o padrão Facade, assinar a alternativa correta.
O padrão Facade é um padrão de projeto de software que fornece uma interface de alto nível para um conjunto de interfaces de baixo nível. Isso permite que os módulos clientes usarem um componente ou um subsistema por meio de uma interface de alto nível, sem precisar conhecer os detalhes da implementação do componente o subsistema.
TEMA 4. PADRÕES GOF COMPORTAMENTAIS
1. Você está desenvolvendo um módulo correspondente a uma classe X que possui ciclo de vida composto por estados e não quero escrever o código desta classe utilizando estruturas condicionais complexas. Para isso, você separa o processamento de cada parte desse ciclo de vida em uma classe à parte. À classe X apenas guarda referência para a situação corrente do processamento e repassa as requisições para objeto correspondente a essa situação corrente. Assinale o padrão a que esse teste se refere.
O padrão de projeto descrito no enunciado é o State. Esse padrão é utilizado quando objeto altera seu comportamento de acordo com o seu estado interno.
2. Assinale a alternativa que expressa a intenção do padrão de projeto Template Method.
O padrão de projeto Template Method tem como objetivo principal definir a estrutura de um algoritmo genérico em uma super classe. Nesse padrão, os passes comuns do algoritmo são implementados na sua própria superclasse, enquanto os passos específicos que podem variar conforme a necessidade são implementadas nas subclasses. Dessa forma, o Template Method método permite que a subclasses redefinam certas etapas de um algoritmo sem alterar a estrutura do algoritmo em si.
3. “Seja um cenário em que existem vários objetos capazes de realizar o processamento associada a uma requisição. Esses objetos são organizados em uma lista encadeada, de modo que a requisição vai sendo passada do primeiro objeto receptor da requisição para o próximo da lista, e assim sucessivamente, até que o resultado desejado seja atingido.”. Assinale a alternativa com o nome do padrão com esse propósito:
O padrão Chain of Responsability Permite que uma requisição seja passada ao longo de uma cadeia de objetos receptores até que um deles possa processá-la. Cada objeto na cadeia decide se pode processar a requisição se deve passa-la para o próximo objeto da cadeia.
4. Sobre o padrão Mediator, assinale a alternativa correta:
O padrão Mediator é um padrão de design de software que permite a redução do acoplamento entre classes, fazendo com que a comunicação entre ela seja feita indiretamente através de um objeto mediador. Nesse sentido, o padrão Mediator pode, de fato, ser aplicado em conjunto com o padrão Observer, que define uma dependência um para muitos entre objetos, de modo que, quando um objeto muda de estado, todos os seus dependentes são notificados e atualizados automaticamente.
5. “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 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 caracteriza 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 paraentão chamar as operações B e C. Da mesma maneira, a partir de uma notificação enviada por B, X chama operações C e D. Essa criação corresponde à estrutura de solução de qual padrão?
O padrão de projeto descrito no enunciado é o Mediator. Esse padrão utilizado quando temos muitos objetos que interagem entre si. No caso, o objeto central X, é o mediador, que controla como e quando os objetos (módulos A, B, C e D) irão interagir, simplificando a comunicação entre eles.
6. Você está desenvolvendo um sistema para acompanhar as cotações da bolsa de valores. As cotações podem ser acompanhadas na interface com o usuário na forma textual (ticker da ação e o seu valor) e na forma de um gráfico de candlesticks, apresentando o histórico das cotações em um período do tempo. As 2 formas de visualização devem estar em sincronia com as variações que ocorrem com o valor da cotação das ações. Assinale a alternativa com o nome do padrão que pode ser aplicado para resolver esse problema de sincronização de visualizações de um conjunto de informações com a sua fonte.
O padrão Observer, é usado quando uma mudança em um objeto requer mudança de outros, e você não sabe quantos objetos precisam ser alterados. No contexto da questão, pagam observe permite que as diferentes visualizações sejam notificadas e atualizadas automaticamente quando há uma mudança no valor da cotação das ações, mantendo assim a sincronia entre as visualizações e a fonte de dados.
7. Suponha que existam diferentes algoritmos para resolver um problema, sendo que cada algoritmo se aplica melhor a um contexto específico (ex: volume maior ou menor de dados, frequência de modificações e de consultas). Esse padrão sugere resolveu o problema encapsulando cada algoritmo em uma classe distinta que implementa uma interface padrão utilizada pelos módulos clientes desses algoritmos. Assinale a alternativa com o nome do padrão que possui o propósito descrito no enunciado.
O padrão Strategy permite que um algoritmo esteja selecionado e trocado em tempo de execução sem alterar o código do cliente .
8. Esse padrão define uma estrutura similar à de um esquema Publisher-Subcribe, pois existe um Publisher detentor de um conjunto de informações e registra um conjunto de objetos interessados em receber notificações de modificações 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.
O padrão Observer define uma dependência um para muitos entre objetos, de maneira que, quando um objeto muda de estado, todos os seus dependentes são notificados e atualizados automaticamente. Nesse caso, o Publish é o objeto que possui informações e o Subscribers são os objetos que estão interessados em receber as notificações de modificação dessas informações.
9. “Esse padrão encapsula uma requisição em um objeto desacoplando, o requisitante e o objeto executor. Este encapsulamento permite registrar o histórico de requisições, reproduzir essas requisições em outros ambientes, 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:
O padrão de projeto Command é caracterizado por encapsular uma solicitação como um objeto, permitindo assim que os usuários parametrizem clientes com filas, solicitações e operações. Além disso, permite que essas operações sejam desfeitas. O padrão Command é útil para implementar, por exemplo, operações de desfazer/refazer em um editor de texto ou para processar solicitações de diferentes tipos com diferentes operações.
10. Sobre o padrão Observer, assinale a alternativa correta.
O padrão Observer frequentemente utilizado na implementação de interfaces gráficas complexas, em que uma fonte de informações precisa estar sincronizada com diferentes visualizações apresentadas simultaneamente para usuário. Isso ocorre porque o padrão Observer permite que o objeto (o observador), seja notificado quando um outro objeto (o assunto) sofre uma mudança de estado. Dessa forma, o observador pode atualizar sua representação da informação de acordo com a mudança de estado do assunto.
11. Você está implementando um sistema e quer guardar o histórico de todas as requisições efetuadas pelo usuário via interface gráfica, de forma a poder realizar operações como desfazer (undo) e refazer (redo) requisições. Assinale a alternativa com o nome do padrão mais indicado para ser aplicado nesse contexto.
O padrão Command permite que você guarde requisições (comandos) em uma fila, possibilitando a execução de operações como desfazer (undo) e refazer (redo). Ele encapsula uma solicitação como um objeto, permitindo assim parametrizar clientes com fila, solicitações e operações.
12. 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, implementam uma interface genérica Z, definindo uma operação específica de tratamento para cada tipo de objeto que pertença a estrutura hierárquica. Assinale a opção com o nome do padrão, cuja estrutura de solução foi descrita no enunciado.
O padrão Visitor é utilizado para percorrer uma estrutura hierárquica de objetos e aplicar uma operação a cada um deles. O padrão Visitor permite que uma operação seja aplicada a todos os objetos de uma estrutura hierárquica, independente de sua classe.
TEMA 5. PADRÕES GRASP
1. Uma classe X acessa diretamente os atributos públicos de uma classe Y. Que tipo de acoplamento existe entre X e Y?
No acoplamento de conteúd , um módulo utiliza aspectos de implementação de outro módulo.
2. Um amigo seu está desenvolvendo um sistema com dezenas de casos de uso. Esse sistema pode ser usado em uma interface web e em um aplicativo móvel. Você o aconselha a criar uma classe para cada caso de uso que ficará responsável por receber os eventos lógicos recebidos dessas interfaces e coordenar a produção das respostas que o sistema deve produzir para esses eventos. Assinale a alternativa com o nome do padrão Grasp descrito na recomendação descrita:
O controlador é um elemento de lógica de negócio responsável por coordenar a produção da resposta aos eventos lógicos geradas por componentes de interface do sistema com elementos externos.
3. O padrão GoF Mediator reduz uma rede de dependências entre objetos de uma topografia N x N para uma topografia 1 x N, introduzindo um objeto central que recebe as notificações enviadas pelos objetos mediados e encaminham o processamento para os objetos responsáveis. Qual padrão Grasp está diretamente relacionado a estratégia de introduzir um objeto para intermediar a interação entre outros?
Sendo uma técnica simples e utilizada em projetos de software, a Indireção pode ser utilizada em diversas situações, dentre elas a comunicação entre objetos remotos, bem como introduzir uma camada entre o cliente e o fornecedor.
4. Assinale a alternativa que descreve uma situação em que a utilização do padrão Especialista de Informação pode comprometer a coesão de um módulo.
O padrão especialista de Informação atribui responsabilidades à classe que possui o conhecimento necessário para realiza-las. No entanto, quando uma mesma classe é responsável por operações de natureza diferentes, como a lógica do negócio e acesso a banco de dados, a coesão do módulo pode ser comprometida. Isso ocorre porque a classe estará sujeita a duas fontes de mudança, o que fere o princípio fundamental da coesão que preconiza que uma classe ou módulo deve ter uma única responsabilidade.
5. Assinale a alternativa com uma afirmativa correta sobre o padrão Grasp Variações Protegidas.
O padrão Grasp Variações Protegidas é uma técnica de design de software que visa identificar e proteger os pontos de variação de um software. Esse padrão aplica conceitos fundamentaisde orientação a objetos como encapsulamento, interface e polimorfismo para isolar esses pontos de variação.
6. 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 funcional, procedural, coincidente, temporal ou sequencial?
Um módulo A descrito como possuindo uma variedade de operações que não estão necessariamente relacionadas entre si, mas estão agrupadas no mesmo módulo. Isso é característico da coesão coincidente, onde os elementos de um módulo estão agrupados de forma arbitrária ou por conveniência, sem uma relação funcional ou sequencial clara entre eles.
7. Um módulo X escreve dados em uma tabela de um banco de dados relacional que é lida por um módulo Y. Se o desenvolvedor responsável pelo módulo X resolver mudar algo no esquema dessa tabela, será preciso avaliar o impacto dessa mudança em Y. Esse fato evidencia a existência de um acoplamento de que natureza entre os módulos X e Y?
O acoplamento externo é caracterizado quando módulos compartilha alguma parte do ambiente externo ao software, como é o caso de um banco de dados. Neste cenário, o módulo X e o módulo Y são acoplados externamente, pois ambos interagem com a mesma tabela de um banco de dados relacional, portanto, qualquer alteração no esquema desta tabela pelo módulo X pode afetar o funcionamento do módulo Y, evidenciando a existência de um acoplamento externo entre eles.
8. Assinale a alternativa com afirmativa correta sobre o padrão Criador.
O padrão Criador é um padrão de design que define o conjunto de condições para que uma classe A seja responsável por estanciar objeto de uma classe B. Isso significa que, em determinadas circunstâncias, a classe A terá a responsabilidade de criar uma instância da classe B. 
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 mais alta.
A ordem de coesão do nível mais baixo para o mais alto é a seguinte: Coincidente → Lógica → Temporal → Procedural → Comunicação → Sequencial → Funcional
10. “Este padrão substitui soluções condicionais baseadas em switch-case ou if-then-else por uma chamada genérica de operação para um objeto que pode assumir diferentes formas em tempo de execução ”. Assinale a alternativa com o nome do padrão Grasp correspondente a esta descrição.
O padrão Grasp Polimofismo permite que um objeto assuma diferentes formas em tempo de execução, substituindo soluções condicionais baseadas em switch-case ou if-then-else, por uma chamada genérica de operação. Isso é feito através da criação de uma interface gráfica, que pode ter diversas implementações específicas. Assim, a estrutura condicional é substituída por uma única chamada feita pela interface genérica, tornando o código mais limpo e eficiente.
11. Veja o código a seguir, assinale alternativa com o tipo de acoplamento existente entre a classe Exemplo e a classe Lâmpada.
É uma função da própria especificação, o acoplamento de controle ocorre quando um módulo controla a lógica interna de outro módulo por meio da passagem de alguma informação de controle.
12. Assinale a alternativa que descreve uma situação em que a utilização do padrão Especialista de Informação pode comprometer a coesão de um módulo.
O padrão especialista de informação atribui responsabilidades à classe que possui conhecimento necessário para realiza-las. No entanto, quando uma mesma classe é responsável por operações de natureza diferentes, como lógica do negócio e acesso a banco de dados, a coesão do módulo pode ser comprometida. Isso ocorre porque a classe estará sujeita a duas fontes de mudança, o que fere o princípio fundamental da coesão, que preconiza que uma classe ou módulo deve ter uma única responsabilidade.
13. “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 do negócio, seguindo uma decomposição de responsabilidades por comportamento e não por representação como a descrita no cálculo do frete.
O padrão Grasp Invenção Pura é utilizado quando se deseja criar classes que não representam diretamente elementos concretos encontrados no domínio do negócio. Esse padrão é aplicado quando se busca uma decomposição de responsabilidades baseadas no comportamento, e não na representação. No exemplo dado, a criação de uma hierarquia de classes para a encapsulares diferentes algoritmos de cálculo de frete é um exemplo de aplicação desse padrão. Essas classes não representam um conceito direto do domínio do problema, mas são criadas para a melhor organizar e estruturar o sistema, permitindo uma maior flexibilidade e manutenção.
14. Assinale a alternativa que apresentam os níveis de acoplamento entre módulos ordenados do mais alto para o do
A ordem de acoplamento do nível mais alto para o mais baixo é a seguinte: Dados → Estrutura → Controle → Externo → Global → Conteúdo
15. Assinale a alternativa correta sobre o padrão Grasp Acoplamento.
16. O padrão GoF Proxy consiste em colocarmos entre 2 objetos remotos um elemento intermediário que captura a requisição do objeto cliente e a encaminhe para a rede até o objeto destino. Dessa forma, o objeto cliente pode fazer chamadas de operações do objeto destino como se ele estivesse rodando localmente. Qual o padrão Grasp está mais diretamente relacionado a solução proposta pelo padrão GoF Proxy?
Sendo uma técnica simples e utilizada em projetos de software, a Indireção pode ser utilizada em diversas situações. Entre elas, a comunicação entre objetos remotos.
17. Uma classe X contém o seguinte conjunto de métodos:
· Fechar arquivos
· Fechar a conexão com o banco de dados
· Finalizar tarefas em execução em segundo plano
· Liberar buffers de armazenamento temporário
· Finalizar a operação, que é um método executado na finalização do sistema e que chama todos os métodos anteriores.
 Assinale a alternativa com o tipo de coesão da classe X.
Na coesão Temporal, se os elementos são agrupados por serem executados em um determinado instante do tempo, ou seja, quando todas as operações são executadas na inicialização do sistema.
18. Assinale a alternativa correta sobre o padrão Grasp Coesão.
A coesão é um princípio fundamental da programação orientada a objetos que avalia se as responsabilidades de um módulo estão relacionadas e possuem o mesmo propósito. Um módulo com alta coesão é aquele que reúne elementos que contribuem para a realização de um propósito específico. Isso significa que todas as funções e operações dentro desse módulo estão intimamente relacionadas e significa que todas as funções e operações dentro desse módulo estão intimamente relacionadas e trabalham juntas para alcançar um objetivo comum.
TEMA 6. TECNOLOGIAS JPA E JEE
1. Uma mudança é essencial no modelo de programação Java com a evolução JEE, foi o uso de anotações nas diversas tarefas de configuração dos EJBs do aplicativo. Para que serve anotação Local no ambiente de criação de EJBs?
2. A arquitetura MVC (Model, View e Controller) é utilizada de forma ampla na criação de sistemas cadastrais e caracteriza-se pela divisão do sistema em três camadas com o objetivo específicos. Considerando a divisão utilizada pelo MVC, a interface de usuário e o componente DAO estariam, respectivamente, nas camadas:
3. Em uma aplicação corporativa Java EE seguindo a arquitetura MVC, as camadas são implementadas com tecnologias específicas:
· A camada Controller recebe requisições HTTP do usuário, coordena as chamadas à camada de negócio e seleciona a View a ser exibida.
· A camada model encapsula lógica de negócio pode interagir com a persistência de dados.
No NetBeans, ao criar um projeto corporativo ¿Enterprise Application¿, qual combinação de tecnologiaseria mais adequada para implementar [Model, Controller] nesta aplicação?
image6.png
image7.png
image8.png
image9.png
image10.png
image11.png
image12.png
image13.png
image14.png
image15.png
image16.png
image17.png
image18.png
image19.png
image20.png
image21.png
image22.png
image23.png
image24.png
image25.png
image26.png
image27.png
image28.png
image29.png
image30.png
image31.png
image32.png
image33.png
image34.png
image35.png
image36.png
image37.png
image38.png
image39.png
image40.png
image41.png
image42.png
image43.png
image44.png
image45.png
image1.png
image46.png
image47.png
image48.png
image2.png
image3.png
image4.png
image5.png