Questão nº 31

Questão de Tecnologia da Informação · CESGRANRIO BASA 01/2021 (nº 31)

CESGRANRIO2021Técnico Científico - Área de Formação: Tecnologia da InformaçãoTecnologia da Informação
Gabarito: Aver comentário ↓

Ao construir uma aplicação bancária, um projetista de software modelou a classe "Conta". Posteriormente, percebeu que cada instância da classe "Conta" poderia ter um conjunto de responsabilidades variadas e independentes, sendo que uma requisição poderia ter que ser atendida por uma ou várias dessas responsabilidades. Isso não permitiria usar de forma eficiente o mecanismo de subclasses para representar essas responsabilidades. Buscando uma solução adequada para essa limitação, o projetista encontrou um padrão de projeto que permite adicionar e retirar dinamicamente responsabilidades apenas aos objetos individuais, e não à classe inteira, estendendo a funcionalidade do objeto, o que seria a solução ideal para o seu caso.
Esse padrão de projeto específico tem uma estrutura comum, em que existe uma

Resposta comentada

Gabarito Alternativa A

O padrão descrito é o Decorator (ou Wrapper). Ele permite "enfeitar" um objeto com novas responsabilidades dinamicamente, sem alterar a classe original. A estrutura típica tem uma classe abstrata base (ex: ComponenteConta) e uma classe decoradora abstrata que também herda dessa base e envolve o objeto original, permitindo que as subclasses concretas (as responsabilidades adicionais) adicionem comportamentos antes ou depois de delegar a chamada ao objeto embrulhado.

  • (A) Correta: É exatamente o padrão Decorator: a superclasse abstrata (ComponenteConta) é herdada por uma segunda classe abstrata (DecoratorConta), que por sua vez é herdada pelas classes concretas que adicionam as responsabilidades (ex: ContaComLimite, ContaComSeguro). Isso permite compor responsabilidades em objetos individuais.
  • (B) Incorreta: Descreve o padrão Adapter, que converte interfaces, não adiciona responsabilidades dinamicamente.
  • (C) Incorreta: Descreve o padrão Builder, focado na construção de objetos complexos passo a passo, não em adicionar comportamento a objetos existentes.
  • (D) Incorreta: Descreve o padrão Observer, que trata de notificação de mudança de estado (um-para-muitos), não de extensão de funcionalidade.
  • (E) Incorreta: Descreve o padrão Chain of Responsibility, que organiza objetos em uma cadeia para tratar requisições, mas não "adiciona responsabilidades" a um objeto; apenas define uma ordem de tratamento.

Armadilha da banca na letra E: Ela é a mais tentadora porque fala em "responsabilidades" e "requisição", mas o Chain of Responsibility não adiciona funcionalidade ao objeto; ele apenas encaminha uma requisição por uma cadeia de handlers. O Decorator (letra A) é o único que "embrulha" o objeto e adiciona comportamento de forma empilhável e dinâmica, exatamente como o enunciado pede.

Fonte: CESGRANRIO BASA 01/2021 Técnico Científico - Área de Formação: Tecnologia da Informação. Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho