Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Konzepte objektorientierter Systeme
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Frame-Logik Eine Einführung Andreas Glausch.
Einführung in die Programmierung Zusammenfassung
Progwerkstatt JAVA Klasse, Objekte, Konstruktoren, Methoden
Objektorientierte Programmierung Definition von Klassen
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Java: Grundlagen der Objektorientierung
Abstrakte Klassen.
Ein Beispiel in Java.
Konstruktoren.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Imperative Programmierung Funktionen und Parameter
Programmieren mit JAVA
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Abstrakter Datentyp in C++ I - Klasse -
AspectJ – Eine Aspektorientierte Programmiersprache
Die Skriptsprache Perl (8) Wolfgang Friebel DESY Zeuthen.
Packages Vortrag : Cornelia Hardt 23. November 1999.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Einführung in Java1 Einführung in JAVA.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Klassen 02 - Klassen.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Grundkonzepte Java - Klassendefinition
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Java und Eclipse.
1. Verhalten der Objekte: Operationen Werden in den Klassen definiert Werden (i.d.R.) auf einem Objekt aufgerufen Wird das Empfängerobjekt genannt Weitere.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Parameterübergabemechanismen für den Methodenaufruf
EPROG Tutorium #6 Philipp Effenberger
EPROG Tutorium #5 Philipp Effenberger
EPROG Tutorium #3 Philipp Effenberger
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
AOP Lösung für Querschnittsaufgaben. Was ist AOP ? AOP ist kein Ersatz für OOP AOP ergänzt OOP AOP beinhaltet die Behandlung von Querschnittsaufgaben.
Robuste Programme durch Ausnahmebehandlung
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
1 VeranstaltungThemaVortragende AINF-Lehrgang 2003 Titel: Grundlagen der Objektorientierten Programmierung Name: Gruppe Programmierung.
Vererbung Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
HG13_ Herzgen, Jung & Lorkowski1 Java Programmierung BlueJ Workshop.
Einführung in die Programmierung mit Java
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 7. Vorlesung WS 2002/2003.
Einführung in Java PING e.V. Weiterbildung Andreas Rossbacher 24. März 2005.
Abstrakte Klassen und das Interface-Konzept
Protokollieren, überwachen und verfolgen Vortrag zum Seminar „Aspektorientierte Programmierung“ von Andre Kaplick - 6. Juni 2016.
Einführung in AspectJ ● Inhalt: 1)Überblick 2)Elemente des crosscuttings in AspectJ 3)„Hello World“ in AspectJ 4)Wie Aspekte in Java verwoben werden 5)Join.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
1. Die rekursive Datenstruktur Liste 1
9. Vererbung und Polymorphie
Implementieren von Klassen
 Präsentation transkript:

Vortrag Einführung in AspectJ

Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving

1 Einleitung AspectJ ist eine aspektorientierte Erweiterung für Java seit Ende 2002 ein Eclipse Technologie Projekt ( Bestandteile von AspectJ: –Compiler (Weaver) –Debugger –Browser zur Visualisierung

2 Querschnittsfunktionalitäten in AspectJ Crosscutting = Querschneiden Querschneiden in AspectJ Dynamisches Querschneiden  Einfügen von neuen Verhaltensweisen in den Programmablauf an wohl definierten Punkten (Join Points) Statisches Querschneiden  Verändern der statischen Struktur zur Übersetzungszeit

2.1 Sprachelemente: Join Point Join Point (Verbindungspunkt): Ein Join Point ist eine identifizierbare Stelle in der Ausführung eines Programms, welche durch eine Reihe von Anweisungen (Advice) modifiziert werden kann. Beispiel: call (public void Konto.einzahlen(double))

2.1 Sprachelemente: Pointcut Pointcut (Schnittpunkt): Pointcuts spezifizieren eine Menge von Join Points an denen die Anweisungen (Advice) „eingewoben“ werden sollen. Beispiel: pointcut kontobewegung (double betrag): (call (public void Konto.einzahlen(double)) || call( public void Konto.abheben(double)))

2.1 Sprachelemente: Advice Advice (Anweisung): Ein Advice ist eine Erweiterung oder Modifikation, die vor nach oder anstelle eines Join Points ausgeführt werden soll. (Methoden der Aspekte)

2.1 Sprachelemente: Advice Man unterscheidet drei Advice- Typen:  Before- Advice: Der Code wird vor dem Join Point aufgerufen  Around- Advice: Der Code wird statt des Join Point aufgerufen  After- Advice: Der Code wird nach der Ausführung des Join Point aufgerufen

2.1 Sprachelemente: Instruktionen Instruktionen: Mit Instruktionen kann in eine bestehende Klasse um weitere Attribute und Methoden erweitert werden. Instruktionen stellen eine rein statische Systemerweiterung dar. Beispiel: private int Konto.Kontonummer; public int Konto.getKontonummer() { return Kontonummer; }

2.1 Sprachelemente: Aspekt Aspekt: Aspekte stellen eine Erweiterung des Klassen- Konzepts dar. Sie sind die Behälter in denen Weaving- Regeln mit Hilfe von Pointcuts, Advice (Anweisungen) und Instruktionen umgesetzt werden. (Weaving= weben)

2.1 Sprachelemente: Aspekt Aspekte können… –Methoden und Variablen enthalten –in ihrer Sichtbarkeit spezifiziert werden –als abstract definiert sein –können nur von abstrakten Aspekten erben –nur vom Laufzeitsystem instanziert werden –können als privileged deklariert werden

2.1 Sprachelemente: Aspektpriorität Aspektpriorität: für einen Pointcut können mehrere Advice definiert werden

3 Beispiel: Anforderungen Java Applikation für eine Kontoführung zentrales Element Java Klasse „Konto“ Funktionale Anforderungen: –Einzahlen –Abheben –Überweisung –Kontostandabfrage –…

3 Beispiel: Klasse „Konto“ mögliche Implementierung:

3 Beispiel: Querschnittsfunktionalitäten systemspezifische Anforderungen: –Kontrolle der Beträge –Ausnahmebehandlung –Logging (Protokollierung) die Methoden „einzahlen“ & „abheben“ besitzen bezüglich Ausnahmebehandlung die selben Anforderungen Kontrolle ob negative Beträge als Parameter übergeben werden

3 Beispiel: Advice & Pointcut Advice (Anweisungen zur Kontrolle der Inputparameter): Pointcut Definition (Menge von Join Points)

3 Beispiel: Aspekt vollständiger Aspekt

4 Join Point Modell: Kategorien Unterscheidung anhand des Wirkungsbereiches KategorieWirkungsbereich MethodenAufruf (call) oder Ausführung (execution) von Methoden Konstruktoren Aufruf (call) oder Ausführung von Konstruktoren (execution) VariablenzugriffLese (get)- oder Schreibzugriff (set) auf eine Variable Ausnahme- behandlung Der catch- Block einer bestimmten Anweisung (handler) Initialisierung1. Laden einer Klasse & initialisieren ihrer statischen Variablen (staticinitialization) 2. Initialisierung eines bestimmten Objekt (initialization) VorinitialisierungAufruf von super() im Konstruktor eines bestimmten Objekts (preinitialization) Advice- Ausführung Betrifft die Ausführung von einem Advice (adviceexecution)

4 Join Point Modell: Eigenschaften Join Points werden durch Pointcuts definiert man unterscheidet anonyme & benannte Pointcuts benannte Pointcuts können über ihren Namen in einen Advice angesprochen werden

4 Join Point Modell: Arten zwei Arten von Pointcuts: Pointcuts kategorisierte Pointcuts: Indizieren eine Menge von gleichartigen Pointcuts (s. Join Points in Kategorien) nicht kategorisierte Pointcuts Pointcuts welche sämtliche Join Points innerhalb eines Bereiches indizieren

4 Join Point Modell (4) nicht kategorisierte Pointcuts:

5 Weaving Java Klasse Erweiterung: *.class ByteCode Java Compiler (z.B. javac) AspectJ Aspekt Erweiterung: *.aj Source Code Java Klasse Erweiterung: *.java Source Code AspectJ Compiler (z.B. ajc) Aspekte werden in den Java- Bytecode eingewebt

Quellen [1]RAMNIVAS LADDAD: AspectJ in Action, Manning Verlag [2] OLIVER BÖHM: Aspektorientierte Programmierung mit AspectJ 5, Dpunkt Verlag