Prévia do material em texto
Você acertou 0 de 10 questões Verifique o seu desempenho e continue treinando! Você pode refazer o exercício quantas vezes quiser. Verificar Desempenho A B C 1 Marcar para revisão "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. Chain of Responsibility Command Mediator Questão 1 de 10 Incorretas (10) Em branco (0) 1 2 3 4 5 6 7 8 9 10 Lista de exercícios Padrões Gof… Sair D E Iterator Template Method Resposta incorreta Opa! A alternativa correta é a letra B. Confira o gabarito comentado! Gabarito Comentado O padrão de projeto descrito no enunciado é o "Command". Este padrão é 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. 2 Marcar para revisão 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. A B C D E Assinale a opção com o nome do padrão cuja estrutura de solução foi descrita no enunciado. Strategy Template Method Observer State Visitor Resposta incorreta Opa! A alternativa correta é a letra E. Confira o gabarito comentado! Gabarito Comentado Gabarito: O padrão Visitor é utilizado para percorrer uma estrutura hierárquica de objetos e aplicar uma operação a cada um deles. No enunciado, é descrito que 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. Isso é exatamente o que o padrão Visitor faz: ele define uma operação Accept para cada tipo de objeto na estrutura A B C hierárquica, e cada objeto implementa essa operação de forma diferente. Assim, o padrão Visitor permite que uma operação seja aplicada a todos os objetos de uma estrutura hierárquica, independentemente de sua classe. 3 Marcar para revisão "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? Chain of Responsibility Strategy Visitor D E Template Method Mediator Resposta incorreta Opa! A alternativa correta é a letra E. Confira o gabarito comentado! Gabarito Comentado O padrão de projeto descrito no enunciado é o Mediator. Este 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. 4 Marcar para revisão 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 B C D E Observer State Template Method Strategy Visitor Resposta incorreta Opa! A alternativa correta é a letra A. Confira o gabarito comentado! Gabarito Comentado O padrão descrito no enunciado é o Observer. Este é um padrão de projeto de software que 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. Neste caso, o Publisher é o objeto que possui as informações e os Subscribers são os objetos que estão interessados em receber as notificações de modificação dessas informações. 5 Marcar para revisão Assinale a alternativa que expressa a intenção A B C D E do padrão de projeto Template Method: Encapsular uma família de algoritmos em objetos, permitindo que os módulos clientes possam utilizar esses algoritmos de forma intercambiável. Definir uma relação de dependência entre objetos, de modo a garantir que modificações no estado do objeto detentor da informação sejam notificadas automaticamente para os objetos inscritos previamente como interessados em receber essas notificações. Implementar a estrutura de um algoritmo genérico em uma superclasse, considerando que os passos comuns são implementados na própria superclasse, enquanto os passos específicos são implementados nas suas subclasses. Permite capturar o estado interno de um objeto, permitindo que o seu estado seja restaurado posteriormente, sem quebrar o encapsulamento desse objeto. Encapsular uma requisição em um objeto, permitindo o registro do histórico de requisições disparadas pelos módulos cliente e a criação de filas de requisições. Resposta incorreta Opa! A alternativa correta é a letra C. Confira o gabarito comentado! Gabarito Comentado O padrão de projeto Template Method tem como objetivo principal definir a estrutura de um algoritmo genérico em uma superclasse. Nesse padrão, os passos comuns do algoritmo são implementados na própria superclasse, enquanto os passos específicos, que podem variar conforme a necessidade, são implementados nas subclasses. Dessa forma, o Template Method permite que as subclasses redefinam certas etapas de um algoritmo sem alterar a estrutura do algoritmo em si. 6 Marcar para revisão "Seja um cenário em que existem vários objetos capazes de realizar o processamento associado 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: A B C D E Chain of Responsibility Command Strategy Mediator Iterator Resposta incorreta Opa! A alternativa correta é a letra A. Confira o gabarito comentado! Gabarito Comentado O padrão de design descrito no enunciado é conhecido como "Chain of Responsibility". Este padrão 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 ou se deve passá-la para o próximo objeto na cadeia. Portanto, a alternativa correta é a "Chain of Responsibility". 7 Marcar para revisão Sobreo padrão Mediator, assinale a alternativa correta: A B C D E Faz a mediação da execução de um conjunto de algoritmos paralelos, de forma que não haja problemas de sincronização. Pode ser aplicado em conjunto com o padrão Observer. Transforma uma interação entre objetos de uma estrutura 1-N para uma estrutura N-N. Encapsula requisições em objetos, mediando o registro do histórico das requisições e o gerenciamento de uma fila de requisições. Permite definir um conjunto de passos em uma superclasse, sendo os passos comuns implementados como métodos dessa superclasse, enquanto os passos específicos são implementados nas suas subclasses. Resposta incorreta Opa! A alternativa correta é a letra B. Confira o gabarito comentado! Gabarito Comentado 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 elas 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 A B C D E 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. 8 Marcar para revisão Você está desenvolvendo um módulo correspondente a uma classe X que possui um ciclo de vida composto por estados e não quer escrever o código dessa classe utilizando estruturas condicionais complexas. Para isso, você separa o processamento de cada parte desse ciclo de vida em uma classe à parte. A classe X apenas guarda a referência para a situação corrente do processamento e repassa as requisições para o objeto correspondente a essa situação corrente. Assinale o padrão a que esse texto se refere: Command State Mediator Memento Chain of Responsibility Resposta incorreta A B C Opa! A alternativa correta é a letra B. Confira o gabarito comentado! Gabarito Comentado O padrão de projeto descrito no enunciado é o "State". Este padrão é utilizado quando um objeto altera seu comportamento de acordo com seu estado interno. No caso descrito, a classe X tem um ciclo de vida composto por estados e, para evitar a utilização de estruturas condicionais complexas, o processamento de cada parte desse ciclo de vida é separado em uma classe à parte. A classe X apenas guarda a referência para a situação corrente do processamento e repassa as requisições para o objeto correspondente a essa situação corrente. 9 Marcar para revisão 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. Chain of Responsibility Strategy Mediator D E State Command Resposta incorreta Opa! A alternativa correta é a letra E. Confira o gabarito comentado! Gabarito Comentado O padrão de projeto mais indicado para ser aplicado nesse contexto é o Command. Este padrão permite que você guarde as 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 filas, solicitações e operações. 10 Marcar para revisão 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 resolver 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: A B C D E Strategy Command Memento Chain of Responsibility Mediator Resposta incorreta Opa! A alternativa correta é a letra A. Confira o gabarito comentado! Gabarito Comentado Gabarito: O padrão Strategy permite que um algoritmo seja selecionado e trocado em tempo de execução, sem alterar o código do cliente. -----