Pular para o conteúdo principal

Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — IF-MT 2023

Arquitetura de SoftwarePadrões de projeto (Design Patterns)
Código
qq952257
Banca
IF-MT
Órgão
IF-MT
Ano
2023
Nível
Superior
Cargo
Professor do Ensino Básico, Técnico e Tecnológico: Informática
Qual Padrão de Projeto foi implementado nesse código?
  1. AProxy.
  2. BComposite.
  3. CInterpreter.
  4. DStrategy.
  5. ENenhuma das alternativas.
Revelar gabarito e comentário

GabaritoD — Strategy.

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”.

Padrão Strategy

Gabarito: letra D. O código implementa o padrão Strategy, pois define uma família de algoritmos encapsulados em classes separadas (CalcLC e CalcCDB) que implementam uma interface comum (CalcFV), e permite que o contexto (CalcSrv) os utilize de forma intercambiável. A classe CalcSrv recebe a estratégia via construtor e delega o cálculo a ela, caracterizando o padrão.

A banca testa o reconhecimento do padrão Strategy a partir de um código concreto. A chave é identificar a interface (CalcFV) como contrato e as implementações (CalcLC, CalcCDB) como algoritmos variáveis injetados no contexto.

1Contexto (CalcSrv)
Recebe estratégia via construtor
Delega cálculo
2Interface (CalcFV)
Contrato comum
3Estratégias concretas
CalcLC
CalcCDB
Strategy
LEVELsoulevel.com.br
Strategy: Contexto (CalcSrv) (Recebe estratégia via construtor, Delega cálculo); Interface (CalcFV) (Contrato comum); Estratégias concretas (CalcLC, CalcCDB)

Alternativa A — ❌ Incorreta

Proxy. O padrão Proxy fornece um substituto ou representante de outro objeto para controlar acesso, diferimento ou logging. No código, não há nenhum objeto intermediário que controle acesso a outro; há apenas delegação direta de cálculo a implementações diferentes. Portanto, não se aplica.

Alternativa B — ❌ Incorreta

Composite. O Composite compõe objetos em estruturas de árvore para representar hierarquias parte-todo, tratando objetos individuais e composições de maneira uniforme. O código não possui hierarquia de partes nem métodos que operem recursivamente sobre uma estrutura. Apenas chama um método calc em uma única implementação.

Alternativa C — ❌ Incorreta

Interpreter. O Interpreter define uma gramática para uma linguagem e um interpretador para sentenças dessa linguagem. O código realiza cálculos matemáticos simples (juros), mas não há gramática, expressões nem interpretação de sentenças. É apenas aplicação de fórmula.

Alternativa D — ✅ Correta ⟵ GABARITO

Strategy. Como explicado, a interface CalcFV define o contrato da estratégia; CalcLC e CalcCDB são estratégias concretas; CalcSrv é o contexto que delega o cálculo à estratégia injetada. Isso permite trocar o algoritmo em tempo de execução, exatamente o propósito do padrão Strategy.

Alternativa E — ❌ Incorreta

Nenhuma das alternativas. Como o padrão implementado é claramente o Strategy, a alternativa D está correta, e a E está errada.

PEGA ESSA DICA!

Para identificar o Strategy na prova: procure uma interface (ou classe abstrata) que define um método, várias implementações concretas dessa interface, e uma classe contexto que recebe uma instância da interface via construtor/setter e delega a operação a ela. É o padrão mais comum para encapsular algoritmos variáveis.

Gabarito: letra D.

Link permanente: /questoes/qq952257