Pubblicato il

AOP Aspect Oriented Programming

AOP Aspect Oriented Programming.

Dalla programmazione procedurale a quella orientata agli oggetti OOP, l’AOP dovrebbe garantire più separazione.

L’AOP descrive aspetti e comportamenti trasversali all’applicazione, separandoli dal dominio applicativo.

CONCETTI DELL’AOP

  1. Crosscutting Concern – AOP isola in moduli ben precisi i  comportamenti trasversali all’applicazione che si ripercuotono in più punti dell’object model (es.: caching, logging, autenticazione, Transaction Management).
  2. Aspect – è l’equivalente di una classe in OOP, serve a modularizzare i crosscutting concern. potendoli aggiungere dinamicamente agli oggetti di dominio senza che questi ne siano a conoscenza. Comprendono:  Advices e Pointcuts.
  3. Join Point[evento] punto preciso nell’esecuzione del programma, come l’invocazione di un metodo o il verificarsi di un eccezione.
  4. Advice[logica] (implementano le logiche applicative degli Aspect) Descrive l’operazione da compiere da parte di un Aspect ad un determinato Join Point. Contrariamente ai metodi, invocati esplicitamente, lAdvice è eseguito automaticamente ogni volta che ad un determinato evento (Join Point) si verifica una particolare condizione (Pointcut).
    1. BeforeAdvice – prima dell’esecuzione di un Join Point
    2. AfterReturning – dopo l’esecuzione di un Join Point in assenza di eccezioni
    3. AfterThrowing – dopo l’esecuzione di un Join Point che ha generato un eccezione
    4. AfterAdvice – dopo l’esecuzione di un Join Point indipendentemente dal suo esito
    5. AroundAdvice – costituisce l’Advice più versatile in quanto consente di prendere il controllo dell’intero Join Point. Non solo è possibile specificare le stesse cose degli Advice precedenti ma è anche possibile decidere quando e se eseguire il Join Point o addirittura generare eccezioni
  5. Pointcut[condizione] Descrive le regole con cui associare l’esecuzione di un Advice ad un determinato Join Point. Sostanzialmente attraverso un predicato viene specificato che al verificarsi di un determinato Join Point (es: esecuzione del metodo foo()) sia applicato un determinato Advice (es: Before).
  6. Target – Anche chiamato Advised Object rappresenta l’oggetto sul quale agisce l’Advice.

 

 

Fonti

HTML.it – http://www.html.it/pag/18729/introduzione-allaop-aspect-oriented-programming/

WIKI – https://it.wikipedia.org/wiki/Programmazione_orientata_agli_aspetti