Pular para o conteúdo principal

Questão de Engenharia de Software — Conceitos Básicos em Engenharia de Software — INSTITUTO AOCP 2025

Engenharia de SoftwareConceitos Básicos em Engenharia de Software
Código
qg540905
Banca
INSTITUTO AOCP
Órgão
MPE-RS
Ano
2025
Nível
Médio
Cargo
Técnico do Ministério Público - Informática
Os padrões arquiteturais de software definem diretrizes para a organização e a estruturação de sistemas, facilitando a escalabilidade, a manutenção e a reutilização de código. O SOLID é um conjunto de princípios de design que auxiliam na criação de software mais flexível e sustentável.Em relação ao Open/Closed Principle (OCP), um dos princípios do SOLID, assinale a alternativa correta.
  1. AAberto para substituição, fechado para segregação.
  2. BAberto para extensão, fechado para modificação.
  3. CAberto para segregação, fechado para inversão.
  4. DAberto para inversão, fechado para extensão.
  5. EAberto para modificação, fechado para substituição.
Revelar gabarito e comentário

GabaritoB — Aberto para extensão, fechado para modificação.

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ípio Open/Closed (OCP) do SOLID

Gabarito: letra B. O Open/Closed Principle (OCP) estabelece que as entidades de software (classes, módulos, funções) devem estar abertas para extensão, mas fechadas para modificação — ou seja, o comportamento deve poder ser estendido sem alterar o código já existente. Essa é a definição clássica do princípio, atribuída a Bertrand Meyer e amplamente difundida no livro Design Patterns (GoF).

O SOLID é um acrônimo que reúne cinco princípios de design orientado a objetos, criados para tornar o software mais flexível, sustentável e fácil de manter. Cada letra representa um princípio: Single Responsibility (Responsabilidade Única), Open/Closed (Aberto/Fechado), Liskov Substitution (Substituição de Liskov), Interface Segregation (Segregação de Interfaces) e Dependency Inversion (Inversão de Dependência). O OCP é o segundo princípio e talvez o mais citado em provas, justamente por sua redação curiosa: "aberto para extensão, fechado para modificação".

A ideia central do OCP é que, ao adicionar uma nova funcionalidade, você não deve sair alterando o código de classes já testadas e em produção — isso aumenta o risco de introduzir bugs e quebra o princípio da responsabilidade única. Em vez disso, você deve projetar o sistema de forma que novas funcionalidades sejam adicionadas por meio de extensão (herança, composição, interfaces, polimorfismo) e não por modificação do código existente. Um exemplo clássico: em vez de modificar uma classe CalculadoraDeDesconto para cada novo tipo de desconto, você cria uma interface Desconto e implementa classes específicas (DescontoClienteVip, DescontoPromocional), que são injetadas na calculadora. Assim, a calculadora permanece fechada para modificação, mas aberta para extensão.

A banca explora exatamente a confusão entre os termos "extensão", "modificação", "substituição", "segregação" e "inversão" — todos eles nomes de outros princípios ou conceitos do SOLID. O candidato que não domina a definição exata do OCP pode facilmente marcar uma alternativa que mistura os termos. Por isso, é essencial memorizar a frase-chave: "aberto para extensão, fechado para modificação".

Guarde essa fronteira: o OCP trata de como o código evolui (estendendo, não alterando), enquanto os outros princípios tratam de quantas responsabilidades uma classe tem (S), como as subclasses se relacionam com as superclasses (L), como as interfaces são divididas (I) e como as dependências são direcionadas (D). É exatamente nessa distinção que as alternativas se dividem.

Alternativa A — ❌ Incorreta

"Aberto para substituição, fechado para segregação" — mistura termos de outros princípios. "Substituição" remete ao Princípio de Liskov (L), que trata da substituibilidade de subclasses por suas superclasses; "segregação" remete ao Princípio da Segregação de Interfaces (I). Nenhum dos dois compõe o OCP. O erro é trocar os termos corretos por outros princípios do SOLID.

Alternativa B — ✅ Correta ⟵ GABARITO

"Aberto para extensão, fechado para modificação" — é a definição literal do Open/Closed Principle. O software deve ser projetado para permitir a adição de novas funcionalidades (extensão) sem alterar o código já existente (modificação). Essa é a redação clássica do princípio, consagrada na literatura de engenharia de software.

Alternativa C — ❌ Incorreta

"Aberto para segregação, fechado para inversão" — novamente, "segregação" e "inversão" são termos de outros princípios (I e D, respectivamente). O OCP não trata de segregação de interfaces nem de inversão de dependências. A alternativa inverte completamente o sentido do princípio.

Alternativa D — ❌ Incorreta

"Aberto para inversão, fechado para extensão" — inverte os termos corretos: o OCP é aberto para extensão, não para inversão. "Inversão" remete ao Princípio da Inversão de Dependência (D). Além disso, o OCP não é fechado para extensão — pelo contrário, a extensão é justamente o mecanismo permitido.

Alternativa E — ❌ Incorreta

"Aberto para modificação, fechado para substituição" — inverte completamente o OCP: o princípio é fechado para modificação, não aberto. "Substituição" remete ao Princípio de Liskov (L). A alternativa contraria a definição literal do OCP.

NÃO CAIA NESSA!

A banca adora trocar os termos do OCP por nomes de outros princípios do SOLID (substituição, segregação, inversão) ou inverter o sentido (aberto para modificação). A frase exata — "aberto para extensão, fechado para modificação" — é a âncora: decore-a e elimine qualquer alternativa que fuja dela. Com treino, você enxerga essas trocas de longe 💪

PEGA ESSA DICA!

Para fixar, associe cada princípio à sua palavra-chave: S = responsabilidade única; O = extensão/modificação; L = substituição; I = segregação; D = inversão. Se a alternativa trouxer "substituição", "segregação" ou "inversão" no contexto do OCP, está errada — esses termos pertencem a outros princípios.

Gabarito: letra B

Link permanente: /questoes/qg540905