Computação Múltipla Escolha

Seja uma expressão matemática representada por uma árvore semântica abstrata, a partir da qual você pode implementar diversas operações como, por exemplo, cálculo do valor da expressão, a verificação sintática e a semântica dessa expressão ou a geração da expressão em notação polonesa. Cada nó da árvore corresponde a um elemento da expressão: número, variável, operadores (soma, subtração, multiplicação, divisão), entre outros. Em vez de definir em cada nó várias operações ligadas às diversas finalidades, esse padrão sugere que o processamento dos nós para cada finalidade (cálculo do valor, verificação sintática etc.) seja concentrado em uma classe que implementa um método para cada tipo de nó (ex.: número, variável, operadores etc.), sendo que esses métodos recebem como parâmetro o objeto correspondente ao nó a ser processado.

Seja uma expressão matemática representada por uma árvore semântica abstrata, a partir da qual você pode implementar diversas operações como, por exemplo, cálculo do valor da expressão, a verificação sintática e a semântica dessa expressão ou a geração da expressão em notação polonesa. Cada nó da árvore corresponde a um elemento da expressão: número, variável, operadores (soma, subtração, multiplicação, divisão), entre outros. Em vez de definir em cada nó várias operações ligadas às diversas finalidades, esse padrão sugere que o processamento dos nós para cada finalidade (cálculo do valor, verificação sintática etc.) seja concentrado em uma classe que implementa um método para cada tipo de nó (ex.: número, variável, operadores etc.), sendo que esses métodos recebem como parâmetro o objeto correspondente ao nó a ser processado.

  1. Observer
  2. Visitor
  3. Template Method
  4. Mediator
  5. State

Resolução completa

Explicação passo a passo

B
Alternativa B

Alternativa B - Visitor

O padrão de projeto descrito na questão é o Visitor. Ele permite definir novas operações sobre uma estrutura de objetos sem precisar alterar as classes dos elementos dessa estrutura.

Análise do Padrão

  • Propósito Principal: Separar os algoritmos das estruturas de dados que operam sobre eles.
  • Como Funciona:
  • Cria-se uma interface Visitor com métodos para cada tipo de nó da árvore (ex: visitNumber, visitOperator).
  • Cada classe de nó implementa um método accept(Visitor v) que chama o método correspondente no visitor, passando this.
  • Isso permite adicionar novas funcionalidades (como cálculo, verificação sintática, notação polonesa) criando novos Visitors, sem modificar o código dos nós.
  • Aplicação Típica: Árvores sintáticas abstratas (ASTs), como mencionado no enunciado para expressões matemáticas.

Por que não são as outras opções?

PadrãoFunção PrincipalPor que não se aplica
ObserverNotificar dependências de mudanças de estadoO foco é comunicação evento, não travessia e operação em estrutura
Template MethodDefinir esqueleto de algoritmo em subclassesNão envolve separar lógica de operação de uma estrutura complexa
MediatorCentralizar interações entre objetosFoca em desacoplar objetos que se comunicam diretamente
StateAlterar comportamento conforme estado internoFoca em transição de estados de um único objeto

Portanto, a descrição de concentrar o processamento dos nós em uma classe separada que recebe o objeto do nó como parâmetro é a definição clássica do padrão Visitor.

Tem outra questão para resolver?

Resolver agora com IA

Mais questões de Computação

Ver mais Computação resolvidas

Tem outra questão de Computação?

Cole o enunciado, tire uma foto ou descreva o problema — a IA resolve com explicação completa em segundos.