Pular para o conteúdo principal

Questão de Arquitetura de Software — Arquitetura de Software — CPCON 2023

Arquitetura de SoftwareArquitetura de Software
Código
qq859523
Banca
CPCON
Órgão
UEPB
Ano
2023
Nível
Superior
Cargo
Analista de Sistemas (Desenvollvimento de Sistema e Informação)
É um padrão de projeto de categoria comportamental. Utiliza uma classe específica para mudar o algoritmo que executa em uma classe elemento. Desta forma, o algoritmo que executa no elemento pode variar como e quando esta classe específica, que define o nome do padrão, variar também. Estamos falando do padrão de projeto
  1. AObserver.
  2. BNull Object.
  3. CFacade.
  4. DVisitor.
  5. EFlyweight.
Revelar gabarito e comentário

GabaritoD — Visitor.

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 Visitor

Gabarito: letra D. A descrição fornecida no enunciado — "Utiliza uma classe específica para mudar o algoritmo que executa em uma classe elemento. Desta forma, o algoritmo que executa no elemento pode variar como e quando esta classe específica, que define o nome do padrão, variar também" — corresponde exatamente ao padrão Visitor (Visitante). O Visitor é um padrão comportamental que permite separar um algoritmo da estrutura de objetos sobre a qual ele opera, adicionando novas operações sem modificar as classes dos elementos. A classe que contém o algoritmo é justamente o Visitor, e diferentes visitors implementam diferentes algoritmos.

Padrão de Projeto

Categoria

Descrição Principal

Relação com o Enunciado

Visitor

Comportamental

Permite separar um algoritmo da estrutura de objetos sobre a qual ele opera, adicionando novas operações sem modificar as classes dos elementos.

Corresponde exatamente. Utiliza uma classe específica (Visitor) para mudar o algoritmo que executa em uma classe elemento.

Observer

Comportamental

Define 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 encaixa. Não envolve variar o algoritmo de um elemento através de uma classe específica.

Null Object

Comportamental

Fornece um objeto com comportamento neutro (sem efeito) para substituir referências nulas.

❌ Não se encaixa. Não envolve a variação de algoritmos em elementos.

Facade

Estrutural

Fornece uma interface simplificada para um conjunto de interfaces de um subsistema.

❌ Não se encaixa. Não é comportamental e não altera algoritmos em elementos.

Flyweight

Estrutural

Usa compartilhamento para suportar grandes quantidades de objetos de granularidade fina de forma eficiente.

❌ Não se encaixa. Não é comportamental e não está relacionado à variação de algoritmos.

Alternativa A — ❌ Incorreta

Observer (Observador) é um padrão comportamental que define 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 encaixa na descrição de variar o algoritmo de um elemento através de uma classe específica.

Alternativa B — ❌ Incorreta

Null Object (Objeto Nulo) é um padrão que fornece um objeto com comportamento neutro (sem efeito) para substituir referências nulas. Ele não envolve a variação de algoritmos em elementos.

Alternativa C — ❌ Incorreta

Facade (Fachada) é um padrão estrutural que fornece uma interface simplificada para um conjunto de interfaces de um subsistema. Não está na categoria comportamental e não altera algoritmos em elementos.

Alternativa D — ✅ Correta ⟵ GABARITO

Visitor (Visitante) é exatamente o padrão descrito. Ele permite definir novas operações sobre uma estrutura de objetos sem modificar as classes desses objetos. A operação é encapsulada em uma classe visitor, e diferentes visitors implementam diferentes algoritmos. A frase "o algoritmo que executa no elemento pode variar como e quando esta classe específica variar" reflete a essência do Visitor.

Alternativa E — ❌ Incorreta

Flyweight (Peso-leve) é um padrão estrutural que usa compartilhamento para suportar grandes quantidades de objetos de granularidade fina de forma eficiente. Não é comportamental e não está relacionado à variação de algoritmos.

Gabarito: letra D.

Link permanente: /questoes/qq859523