Engenharia Múltipla Escolha

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.

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.

  1. Quando definimos uma classe que fornece uma interface de alto nível para módulos clientes utilizarem para disparar operações de negócio.
  2. Quando colocamos em uma mesma classe operações de naturezas diferentes como lógica do negócio e acesso a banco de dados, uma vez que eles utilizam as mesmas informações da classe.
  3. Quando definimos um objeto intermediário para mediar a comunicação entre objetos remotos.
  4. Quando introduzimos uma interface abstrata em substituição a um código centralizado em um módulo com estruturas condicionais do tipo switch-case ou if-then-else.
  5. Quando definimos a responsabilidade por criar um objeto para a classe que contém todas as informações necessárias para realizar essa criação.

Resolução completa

Explicação passo a passo

B
Alternativa B

Alternativa B

Padrão Information Expert (Especialista de Informação)

Este padrão, proposto pela Grady Booch e incorporado pelos GoF, sugere que uma responsabilidade deve ser atribuída a uma classe que possui a informação necessária para realizá-la. A intenção original é manter o conhecimento encapsulado onde ele pertence.

No entanto, a aplicação rígida ou incorreta desse princípio pode levar a problemas de design, especificamente relacionados à coesão.

Análise da Questão

O Problema da Coesão

Coesão refere-se ao grau em que os elementos dentro de um módulo pertencem uns aos outros. Uma classe com alta coesão realiza uma única tarefa bem definida. Quando tentamos aplicar o "Especialista de Informação" sem critério, podemos acabar criando classes que acumulam responsabilidades diversas apenas porque compartilham dados.

Por que a Alternativa B está correta?

A alternativa descreve a seguinte situação:

"Quando colocamos em uma mesma classe operações de naturezas diferentes como lógica do negócio e acesso a banco de dados..."

Isso compromete a coesão porque:

  • Mistura de Responsabilidades: Uma classe não deve cuidar tanto da regra de negócios quanto da infraestrutura de persistência (banco de dados).
  • Baixa Coesão Funcional: Se você mudar a forma como o banco funciona, terá que mexer na lógica de negócio, e vice-versa.
  • Violação do Princípio da Responsabilidade Única: Embora a classe "tenha a informação", ela assumiu tarefas que deveriam estar separadas em módulos distintos (ex: Service Layer vs Repository Pattern).

Análise das outras alternativas

  • (A) Descreve uma Facade (interface simplificada), que geralmente melhora a usabilidade sem necessariamente prejudicar a coesão interna dos módulos clientes.
  • (C) Descreve o padrão Proxy, usado para controle de acesso ou lazy loading, não sendo intrinsecamente prejudicial à coesão.
  • (D) Descreve uma refatoração comum para substituir condicionais complexos, melhorando a manutenibilidade e a coesão do código.
  • (E) Descreve o padrão Creator, que define quem deve instanciar um objeto. É uma boa prática de design, não uma causa de baixa coesão.

Conclusão
A alternativa B é a única que descreve explicitamente uma má prática de design onde a aplicação de um princípio (juntar coisas que usam os mesmos dados) resulta em uma classe com múltiplas responsabilidades desconexas, reduzindo a coesão do módulo.

Tem outra questão para resolver?

Resolver agora com IA

Mais questões de Engenharia

Ver mais Engenharia resolvidas

Tem outra questão de Engenharia?

Cole o enunciado, tire uma foto ou descreva o problema — a IA resolve com explicação completa em segundos.