Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — COPEVE-UFAL 2022
Arquitetura de Software›Padrões de projeto (Design Patterns)
Código
qq709617
Banca
COPEVE-UFAL
Órgão
TCE-AL
Ano
2022
Nível
Médio
Cargo
Agente de Controle Externo - Ciências da Computação
Um cliente deseja desenvolver um sistema para avaliação automática de crédito pessoal. Porém, as regras de avaliação a serem implementadas pelo software variam de acordo com a faixa etária do interessado no crédito. Isto é, deve haver três conjuntos de regras de negócio: um para pessoas de até 30 anos de idade, um segundo conjunto de regras para pessoas entre 30 e 50 anos, e um terceiro conjunto de regras para pessoas acima de 50 anos.Tendo em vista a situação-problema apresentada, para a implementação do software, seria adequado o uso do padrão de projeto
AStrategy.
BObserver.
CCommand.
DComposite.
ETemplate Method.
Revelar gabarito e comentário▾
GabaritoA — 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 de projeto: Strategy
Gabarito: letra A (Strategy). O padrão Strategy é o mais adequado porque permite encapsular diferentes conjuntos de regras de negócio (algoritmos) em objetos separados e torná-los intercambiáveis em tempo de execução, conforme a faixa etária do cliente. As demais alternativas não atendem ao requisito de variar algoritmos conforme um parâmetro (idade).
Padrão
Finalidade
Aplicabilidade no cenário
Adequação
Strategy
Encapsular famílias de algoritmos e torná-los intercambiáveis
Permite criar estratégias distintas para cada faixa etária (≤30, 30-50, >50) e selecioná-las dinamicamente
✅ Correta
Observer
Notificar múltiplos objetos sobre mudanças de estado
Não se aplica à variação de regras de negócio conforme um parâmetro
❌ Incorreta
Command
Encapsular requisições como objetos
Foco em desacoplar solicitante e executor, não em variar algoritmos
❌ Incorreta
Composite
Compor objetos em estruturas hierárquicas parte-todo
Não resolve a necessidade de trocar conjuntos de regras
❌ Incorreta
Template Method
Definir esqueleto de algoritmo com etapas postergadas
Adequado para estrutura fixa com partes variáveis, não para troca total de algoritmos
❌ Incorreta
Alternativa A — ✅ Correta ⟵ GABARITO
O padrão Strategy define uma família de algoritmos, encapsula cada um e os torna intercambiáveis. No cenário, cada faixa etária (≤30, 30-50, >50) teria uma estratégia concreta diferente para avaliação de crédito, permitindo que o sistema selecione dinamicamente a regra a ser aplicada. É a solução clássica para o problema de variação de comportamento.
Alternativa B — ❌ Incorreta
O padrão Observer é usado para estabelecer uma dependência um-para-muitos entre objetos, de modo que quando um objeto muda de estado, todos seus dependentes são notificados. Não se aplica à necessidade de variar algoritmos de avaliação conforme uma característica do cliente.
Alternativa C — ❌ Incorreta
O padrão Command encapsula uma requisição como um objeto, permitindo parametrizar clientes com filas, requisições e operações. Seu foco é desacoplar o solicitante do executor, e não fornecer diferentes implementações de uma regra de negócio.
Alternativa D — ❌ Incorreta
O padrão Composite permite compor objetos em estruturas de árvore para representar hierarquias parte-todo. É útil para tratar objetos individuais e compostos de maneira uniforme, mas não resolve a variação de algoritmos.
Alternativa E — ❌ Incorreta
O padrão Template Method define o esqueleto de um algoritmo em uma operação, postergando a implementação de algumas etapas para subclasses. Embora envolva variação de comportamento, ele é mais adequado quando há uma estrutura fixa com partes variáveis, e não quando se deseja trocar totalmente o algoritmo (como diferentes conjuntos de regras independentes).
PEGA ESSA DICA!
Ao identificar que um sistema precisa de diferentes comportamentos (algoritmos) selecionáveis em tempo de execução, lembre-se imediatamente do padrão Strategy. É um dos padrões comportamentais mais cobrados em provas.