Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — IF-MT 2023
Arquitetura de Software›Padrõ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?
AProxy.
BComposite.
CInterpreter.
DStrategy.
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.
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.