AspectJ: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m ortografia |
m Bot: Correzione di uno o più errori comuni |
||
Riga 12:
È 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]] 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===
Gli advice sono degli insiemi di istruzioni che vengono eseguite
quando un certo pointcut diventa valido
informazioni sui join point che lo compongono che il pointcut può
fornirgli. Sempre con riferimento alla metafora del teatro, gli advice definiscono cosa fanno gli spettatori sul palcoscenico.
Riga 25:
Le unità elementari dell' OOP sono gli oggetti, raggruppati in classi; le unità fondamentali dell'AOP sono gli aspetti.
Un aspetto normalmente contiene uno o più pointcut e uno o più advice, oltre a metodi e attributi, come le normali classi. Un aspetto modella una certa 'problematica trasversale' (cioè comune a più oggetti) del problema da risolvere
===AspectJ in dettaglio===
Riga 31:
====Join points====
un join point può essere, ad esempio, la chiamata di un metodo
call (void faiqualcosa(int))
o anche come
execution(void faiqualcosa(int))
La differenza tra un join point di tipo execution e uno di tipo call è molto semplice
Esistono inoltre molti altri modi per individuare dei join point nel flusso del programma :
|