Pular para o conteúdo principal

Questão de Programação — Programação orientada a aspectos — Quadrix 2023

ProgramaçãoProgramação orientada a aspectos
Código
qg027831
Banca
Quadrix
Órgão
CRM-MG
Ano
2023
Nível
Superior
Cargo
CRM - MG - Analista de Sistemas
No escopo da programação orientada a aspectos, o termo que é usado para representar pontos bem definidos na execução de um programa é conhecido como
  1. Apointcut.
  2. Badvice.
  3. Cintroduction.
  4. Djoinpoint.
  5. Earound.
Revelar gabarito e comentário

GabaritoD — joinpoint.

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”.

Programação Orientada a Aspectos: joinpoint

Gabarito: letra D. Na programação orientada a aspectos (AOP), o termo que representa pontos bem definidos na execução de um programa é o joinpoint — é o momento exato (chamada de método, execução, atribuição, etc.) em que um aspecto pode ser aplicado. Os demais termos (pointcut, advice, introduction, around) são conceitos relacionados, mas com funções distintas, como veremos a seguir.

A programação orientada a aspectos é um paradigma que visa separar preocupações transversais (cross-cutting concerns) do código principal, como logging, segurança e transações. Para isso, ela introduz uma série de conceitos próprios que precisam ser bem compreendidos para não cair em armadilhas de prova.

O joinpoint é o ponto de execução do programa onde um aspecto pode ser inserido. Pense nele como um "gancho" na execução: cada vez que o programa passa por aquele ponto, o aspecto pode ser acionado. Exemplos típicos de joinpoints são: a chamada de um método, a execução de um método, a atribuição a um campo, a construção de um objeto, entre outros.

O pointcut é um conjunto de joinpoints. Ele define quais joinpoints serão interceptados pelo aspecto. É uma expressão que seleciona os pontos de execução relevantes. Por exemplo, um pointcut pode selecionar "todas as chamadas ao método calcular() da classe Conta".

O advice é o código que será executado quando um joinpoint selecionado pelo pointcut for atingido. Ele é a ação que o aspecto realiza. Existem vários tipos de advice, como before (antes do joinpoint), after (depois), around (ao redor, podendo controlar a execução do joinpoint).

A introduction (ou inter-type declaration) é um mecanismo que permite adicionar novos membros (atributos ou métodos) a uma classe existente, sem modificar o código-fonte original. É uma forma de estender o comportamento das classes.

A pegadinha desta questão é justamente a confusão entre joinpoint e pointcut. O joinpoint é o ponto específico na execução; o pointcut é a seleção de joinpoints. A banca explora essa distinção sutil, que é fundamental na AOP.

Para fixar, veja a relação entre os conceitos:

Conceito

O que é

Analogia

Joinpoint

Ponto específico na execução do programa

Um endereço específico na cidade

Pointcut

Conjunto de joinpoints selecionados

Um bairro (conjunto de endereços)

Advice

Código executado no joinpoint

A ação realizada ao chegar no endereço

Introduction

Adição de membros a uma classe

Construir uma nova casa em um terreno

Guarde essa distinção: o joinpoint é o onde (ponto exato), o pointcut é o quais (seleção), o advice é o o quê (ação) e a introduction é o estender (adicionar). É exatamente nessa fronteira que as alternativas se dividem.

1Joinpoint
ponto específico na execução
onde o aspecto pode agir
2Pointcut
seleção de joinpoints
expressão que define quais
3Advice
código executado no joinpoint
before / after / around
4Introduction
adiciona membros à classe
sem alterar o código-fonte
AOP: conceitos-chave
LEVELsoulevel.com.br
AOP: conceitos-chave: Joinpoint (ponto específico na execução, onde o aspecto pode agir); Pointcut (seleção de joinpoints, expressão que define quais); Advice (código executado no joinpoint, before / after / around); Introduction (adiciona membros à classe, sem alterar o código-fonte)

Alternativa A — ❌ Incorreta

Pointcut é o conjunto de joinpoints selecionados por uma expressão, não o ponto em si. A banca troca o conceito de "ponto bem definido" (joinpoint) pela "seleção de pontos" (pointcut).

Alternativa B — ❌ Incorreta

Advice é o código que será executado no joinpoint, ou seja, a ação do aspecto. Não é o ponto de execução em si, mas o comportamento que se aplica a ele.

Alternativa C — ❌ Incorreta

Introduction é o mecanismo de adicionar novos membros (métodos/atributos) a classes existentes. Não tem relação com pontos de execução do programa.

Alternativa D — ✅ Correta ⟵ GABARITO

Joinpoint é, por definição, um ponto bem definido na execução do programa onde um aspecto pode ser aplicado. É o termo exato que o enunciado descreve.

Alternativa E — ❌ Incorreta

Around é um tipo específico de advice que envolve o joinpoint, permitindo controlar se ele será executado ou não. Não é o ponto de execução, mas uma forma de advice.

NÃO CAIA NESSA!

A banca adora trocar joinpoint por pointcut. Lembre-se: joinpoint é o ponto específico (o "onde" exato); pointcut é a seleção de joinpoints (o "quais"). Se a questão pedir "ponto bem definido na execução", a resposta é sempre joinpoint. Com treino, você enxerga essa troca de longe 💪

Gabarito: letra D

Link permanente: /questoes/qg027831