AspectJ: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Corretto: "a partire dalla" |
m refuso |
||
(Una versione intermedia di un altro utente non mostrate) | |||
Riga 16:
Un concetto basilare di '''AspectJ''' è quello di join point. Un join point può essere intuitivamente definito come un certo istante nell'esecuzione del [[Programmazione (informatica)|programma]]; ogni chiamata a un qualsiasi metodo di un oggetto qualunque potrebbe essere un join point, così come leggere il valore di una [[Variabile (informatica)|variabile]], creare un oggetto o modificare il valore di una variabile.
I ''pointcut'' invece descrivono le situazioni particolari che si vengono a creare durante l'esecuzione del programma. Un pointcut è cioè una sorta di [[variabile booleana]] il cui valore dipende da
È possibile definire un pointcut in maniera estremamente dettagliata; si può ad esempio definire un pointcut che sia valido quando un qualsiasi metodo della [[Classe (informatica)|classe]] A viene chiamato, o ancora, definire un pointcut che è valido quando un metodo di un oggetto di classe A chiama il [[Metodo (programmazione)|metodo]] xyz(int a, int b) di un oggetto di classe B, oppure un pointcut che sia valido quando viene eseguito il metodo B.exec(String s) tranne nel caso in cui il suddetto metodo venga chiamato da un membro della classe F. È anche possibile definire un pointcut che sia valido quando uno qualunque di un certo insieme di metodi specificato dal programmatore viene chiamato.
Un pointcut può contenere informazioni sui join point che lo compongono, quali ad esempio gli argomenti del metodo chiamato (se il pointcut contiene un join point definito dalla chiamata di un metodo) o lo specifico oggetto cui era diretta la chiamata (sempre che il pointcut contenga un join point consistente nella chiamata di un metodo di un oggetto). Facendo riferimento alla [[metafora]] precedente, i pointcut definiscono quando gli spettatori salgono sul palcoscenico, ossia il momento in cui gli aspetti modificano il normale flusso del programma.
===Advice===
Riga 150:
l'effetto di questo advice è di far stampare come messaggio a video, prima che il metodo termini, la parola '''arrivederci'''.
Un advice può definire esso stesso il pointcut da cui dipende; in altre parole, la seguente [[sintassi]] in aspectj è corretta:
after(): execution (void faQualcosa(..)) {System.out.println("arrivederci");
Riga 168:
Bisogna ricordare che in java un metodo può terminare regolarmente oppure lanciando un'eccezione: aspectj permette di distinguere questi due casi.
Si [[veda]] il seguente codice:
after() returning punto1() : { System.out.println("tutto regolare");
|