Benjamin Dietz
 
  Home
  Lebenslauf
  Studium
  Zeugnisse
  Qualifikationen
  Publikationen
  Projekte
  PHP Stuff
  Kontakt
  Impressum
   

Seminararbeit AOP mit AspectJ

Die aspektorientierte Programmierung (AOP) versucht die Probleme der reinen objektorientierten Programmierung (OOP) zu lösen.

Durch AOP kann die Softwaremodellierung besser nach ihren Belangen separiert werden.
Querschnittsbelange, die viele Bereiche der Software betreffen können zentral ausgelagert werden.
Dies wird durch aspektorientierte Konzepte erreicht, die es erlauben bestehende Objekte zu überwachen um auf bestimmte Aktionen entsprechend reagieren zu können.
Somit ist eine nachträgliche Erweiterung an bestehenden Objekten möglich.
AspectJ ist eine der am weitesten entwickelten aspektorientierten Erweiterungen für die Programmiersprache Java.
Im Gegensatz zu anderen Implementierungen erweitert AspectJ die Sprache Java direkt unter Verwendung eines eigenen Compilers.
Dieser Compiler führt während des Weavings Klassen und Aspekte zusammen.
Der erzeugte Bytecode ist kompatibel zu Standart Java-Class Dateien und kann auf jeder beliebigen Java Virtuellen Maschine ausgeführt werden.

AspectJ unterstützt alle gängigen aspektorientierten Konzepte.
Aspekte dienen als Behälter für AOP Konstrukte und sind vergleichbar mit Klassen. Sie können von anderen Aspekten erben, Interfaces Implementieren und bestehende Klassen erweitern.
Joinpoints sind Sprungpunkte die von einem Aspekt benutzt werden können um bestehenden Code zu erweitern.
Mit Hilfe von Pointcuts können diese Joinpoints ausgewählt werden. Diese Selektion geschieht anhand der jeweiligen Signatur des Code Konstruktes.
Durch Wildcards können die Signaturen über Platzhaltern beschrieben werden.
Durch verschiedene Pointcut Beschreibungen können Methodenaufrufe, Zugriffe auf Attribute sowie Exception Handler überwacht werden.

Advices ermöglichen die gezielte funktionalen Erweiterungen der selektierten Joinpoints.
Ein Advice kann auf zwei unterschiedliche Arten auf den Kontext der jeweiligen Joinpoints zugreifen. Der Zugriff über das thisJoinPoint Objekt bietet eine Zugriffsmöglichkeit die über Reflection realisiert wird. Diese Möglichkeit bietet bedeutend mehr Informationen im Vergleich mit dem Zugriff über formale Parameter, da diese nur ein Zugriff auf das Kontextobjekt des Joinpoints und dessen Argumente ermöglichen. Durch die Realisierung über Reflection ist diese Möglichkeit jedoch nicht so schnell, als der Zugriff über formale Parameter.
Inter-Type Declarations sind im Allgemeinen als Introductions bekannt. Mit Hilfe von Introductions können bestehende Klassen nachträglich um Attribute, Methoden und Konstruktoren erweitert werden.

Downloads:
  • Seminararbeit zu AspectJ
  • Präsentation zur Seminararbeit
  • Code Beispiel
 
Valid HTML 4.01!