Pular para o conteúdo principal

Questão de Engenharia de Software — Orientação a Objetos — FGV 2025

Engenharia de SoftwareOrientação a Objetos
Código
fg105422
Banca
FGV
Órgão
AL-AM
Ano
2025
Nível
Superior
Cargo
Analista Legislativo - Programador
Um módulo de relatórios da Assembleia foi projetado de modo que, sempre que um novo formato de relatório é necessário, o código da classe GeradorDeRelatorio precisa ser modificado para incluir a nova lógica de exportação.Assinale o princípio SOLID está sendo violado por esse design, e a técnica ideal de design seria ideal para corrigi-lo
  1. ADependency Inversion Principle; Correção: Padrão Adapter.
  2. BSingle Responsibility Principle; Correção: Padrão Singleton.
  3. COpen-Closed Principle; Correção: Padrão Strategy ou Decorator.
  4. DLiskov Substitution Principle; Correção: Herança.
  5. EInterface Segregation Principle; Correção: Facade.
Revelar gabarito e comentário

GabaritoC — Open-Closed Principle; Correção: Padrão Strategy ou Decorator.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Princípios SOLID e Design Patterns

Gabarito: letra C. O cenário viola o Open-Closed Principle (OCP), pois a classe GeradorDeRelatorio precisa ser modificada para cada novo formato de relatório. O OCP determina que as classes devem estar abertas para extensão, mas fechadas para modificação. Para corrigir, aplicam-se os padrões Strategy ou Decorator, que permitem adicionar novos comportamentos sem alterar o código existente.

Alternativa A — ❌ Incorreta

O Dependency Inversion Principle trata da dependência de abstrações, não de módulos concretos. O padrão Adapter é usado para compatibilizar interfaces, não para adicionar novas variantes de comportamento. Não se aplica ao problema descrito.

Alternativa B — ❌ Incorreta

O Single Responsibility Principle está relacionado à coesão de classes, mas o problema não é ter múltiplas responsabilidades – é a necessidade de modificar a classe para cada novo formato. O padrão Singleton controla instância única, o que não resolve a extensibilidade.

Alternativa C — ✅ Correta ⟵ GABARITO

O Open-Closed Principle é diretamente violado: a classe GeradorDeRelatorio exige modificação a cada novo formato. Os padrões Strategy (definir uma família de algoritmos intercambiáveis) e Decorator (adicionar responsabilidades dinamicamente) são as correções clássicas para este princípio, permitindo extensão sem alteração.

Alternativa D — ❌ Incorreta

O Liskov Substitution Principle assegura que subtipos possam substituir seus tipos base, mas o cenário não trata de herança mal aplicada. Usar herança como correção não resolveria o problema de modificação da classe original, pois ainda seria necessário alterar a classe base para novos formatos.

Alternativa E — ❌ Incorreta

O Interface Segregation Principle prega interfaces específicas, não coesas demais. O padrão Facade fornece uma interface simplificada para um subsistema, mas não soluciona a necessidade de adicionar novos formatos sem modificar a classe existente.

Gabarito: letra C.

Link permanente: /questoes/fg105422