AspectJ: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
+Portale
m Aspetti: Spostato il primo pezzo di codice in un "Blocco di codice", eliminato i numeri di riga inseriti a mano, corretto la sua formattazione e aggiunto i numeri di riga automatici
Riga 198:
Un esempio è il seguente:
 
<syntaxhighlight lang="java" line="1">
<pre>
1.import java.io.* ;
 
2.public privileged aspect Prestaz {
final byte[] acapo = {0x0a} ;
0x0a
3. File ris ;
};
4. RandomAccessFile fl ;
3. File ris ;
5. public Prestaz() { try { ris = new File("RisulTato.txt") ;
6. ris.delete()RandomAccessFile fl;
7. ris.createNewFilepublic Prestaz() ;{
try {
8. fl = new RandomAccessFile(ris,"rw") ;
5. public Prestaz() { try { ris = new File("RisulTato.txt") ;
ris.delete();
ris.createNewFile();
8. fl = new RandomAccessFile(ris, "rw") ;
 
9. } catch (IOException eccez) { }
}
 
10. private pointcut punto1(): execution(void main(..)) ;
11. private long start1 ;
12. private long stop1 ;
13. private pointcut punto2(): execution(void stampa(String)) ;
14. private long start2 ;
15. private long stop2 ;
16. before() : punto1() {
start1 = System.currentTimeMillis() ;
 
17. }
 
18. after() : punto1() {
stop1 = System.currentTimeMillis() ;
19. long temp = stop1 -start1 start1;
20. Long t = new Long(temp) ;
21. String data = t.toString() ;
22. String nome = "void main(..)" ;
 
23. try {
fl.write(nome.getBytes()) ;
24. String st = " : tempo di esecuzione (ms) : " ;
25. fl.write(st.getBytes()) ;
26. fl.write(data.getBytes()) ;
27. fl.write(acapo) ;
28. } catch (IOException eccez) { }
}
 
29. before() : punto2() {
start2 = System.currentTimeMillis() ;
 
30. }
 
31. after() : punto2() {
stop2 = System.currentTimeMillis() ;
32. long temp = stop2 -start2 start2;
33. Long t = new Long(temp) ;
34. String data = t.toString() ;
35. String nome = "void stampa(String)" ;
36. try {
fl.write(nome.getBytes()) ;
37. String st = " : tempo di esecuzione (ms) : " ;
38. fl.write(st.getBytes()) ;
39. fl.write(data.getBytes()) ;
40. fl.write(acapo) ;
41. } catch (IOException eccez) { }
}
}
42. }
</syntaxhighlight>
</pre>
 
alla riga 2 c'è la dichiarazione dell'aspetto. Gli aspetti possono essere privati o pubblici, esattamente come le classi, ma possono anche essere privilegiati ('privileged') oppure no: un normale aspetto rispetta il principio dell'information hiding, mentre uno privilegiato no. In parole povere, solo gli aspetti dichiarati come 'privileged' hanno la visibilità degli attributi e dei metodi privati di una classe, e di conseguenza solo gli aspetti privilegiati possono contenere al loro interno dei pointcut che nella loro definizione facciano riferimento a join point corrispondenti, per esempio, al get o al set di un attributo privato dell'oggetto o all'esecuzione di un metodo privato. L'aspetto in esame alla riga 2 viene dichiarato come un aspetto pubblico privilegiato.
Riga 293 ⟶ 307:
 
avrà l'effetto opposto.
 
 
===''Inter-Type declarations''===