Pular para o conteúdo principal

Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — COPEVE-UFAL 2022

Arquitetura de SoftwarePadrõ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
  1. AStrategy.
  2. BObserver.
  3. CCommand.
  4. DComposite.
  5. 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.

Gabarito: letra A.

Link permanente: /questoes/qq709617