Pular para o conteúdo principal

Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — NC-UFPR 2024

Arquitetura de SoftwarePadrões de projeto (Design Patterns)
Código
qg331043
Banca
NC-UFPR
Órgão
UFPR
Ano
2024
Nível
Superior
Cargo
NC - - Analista de Tecnologia da Informação
Qual é o padrão de projeto comportamental conhecido por encapsular uma solicitação como um objeto, de modo a permitir parametrizar clientes com diferentes solicitações, enfileirar ou fazer o registro (log) de solicitações e suportar operações que podem ser desfeitas?
  1. ACommand
  2. BChain of Responsability
  3. CInterpreter
  4. DComposite
  5. EVisitor
Revelar gabarito e comentário

GabaritoA — Command

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 Command (Comportamental)

Gabarito: letra A. O padrão Command encapsula uma solicitação como um objeto, permitindo parametrizar clientes com diferentes solicitações, enfileirar ou registrar (log) solicitações e suportar operações reversíveis (undo/redo). Exatamente a descrição do enunciado.

O livro clássico "Design Patterns: Elements of Reusable Object-Oriented Software" (GoF) define o Command como um padrão comportamental que converte uma requisição em um objeto independente, contendo toda a informação necessária para a execução futura ou desfazer da ação.

1Command
Encapsula solicitação como objeto
Parametriza clientes
Enfileira / registra (log)
Suporta undo/redo
2Chain of Responsibility
Cadeia de handlers
Um trata a solicitação
3Interpreter
Gramática + interpretador
4Visitor
Opera sem modificar classes
Padrões Comportamentais (GoF)
LEVELsoulevel.com.br
Padrões Comportamentais (GoF): Command (Encapsula solicitação como objeto, Parametriza clientes, Enfileira / registra (log), Suporta undo/redo); Chain of Responsibility (Cadeia de handlers, Um trata a solicitação); Interpreter (Gramática + interpretador); Visitor (Opera sem modificar classes)

Alternativa A — ✅ Correta ⟵ GABARITO

Command: encapsula uma solicitação como um objeto. Isso permite parametrizar clientes com diferentes solicitações, enfileirar ou registrar solicitações e suportar operações que podem ser desfeitas. Exemplos: botões de interface, transações, macros.

Alternativa B — ❌ Incorreta

Chain of Responsibility: passa a solicitação ao longo de uma cadeia de handlers até que um deles a trate. Não encapsula a solicitação como um objeto nem suporta desfazer.

Alternativa C — ❌ Incorreta

Interpreter: define uma representação para uma gramática e um interpretador que a avalia. Não tem relação com encapsular solicitações ou enfileiramento.

Alternativa D — ❌ Incorreta

Composite: compõe objetos em estruturas de árvore para representar hierarquias parte-todo. Não é comportamental (é estrutural) e não trata de solicitações.

Alternativa E — ❌ Incorreta

Visitor: permite adicionar operações a objetos sem modificar suas classes. Separar algoritmo da estrutura do objeto, não encapsular solicitações.

PEGA ESSA DICA!

Para memorizar os padrões comportamentais, associe Command a "comando" (uma ordem encapsulada), Chain of Responsibility a "cadeia de responsabilidade" (tentativa em sequência), Interpreter a "interpretar linguagem", Visitor a "visitante" (operação externa). O Command é o único que explicitamente suporta undo/redo.

Gabarito: letra A.

Link permanente: /questoes/qg331043