Änlich wie in C++ der Übergang von "struct" zu "clsss" den Schritt zur Objektorientierung einletitet, läutet der Übergang von "class" zu "aspect" die Aspektorientierung ein.
In 1Person finden Sie das Beispiel zur Ablage der Apekte und abstrakten Aspekte.
In 2Person befindet sich der LoggingAspekt, der das Logging-Interface implementiert.
3PersonRunnable enthält das Beispiel, wo mehrere Personen-Threads gestartet werden und jedem Objekt eine eigene Aspekt-Instanz zugeteilt wird, um die korrekte Arbeitszeit zu ermitteln.
Eine andere Möglichkeit, mehrere Aspekt-Instanzen zu kreieren, wird in 4PersonPercflow demonstriert. Dort wird für den PauseAspekt "cflowbelow()" verwendet.
Neu in AspectJ 5 ist die Instanziierung über "pertypewithin", wie in LogAspect aus 5aFirma ersichtlich ist. Hier wird pro Klasse eine eigenes Logger-Objekt zur Verfügung gestellt. Wenn Sie die Firma- oder Person-Klasse starten, werden Sie feststellen, dass sich die Log-Ausgaben im ausgegebenen Klassennamen unterscheiden.
In 5PersonAspectOf wird im PauseAspekt auf Attribute des ArbeitszeitAspekts zugegriffen.
Dar PauseAspekt in 6PersonPrivileged zeigt, wie der Zugriff auf fremde Aspekte aussieht, wenn mehrere Instanzen im Spiel sind.