Aspekt Orientierte Programmierung
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Veränderung (letzte Änderung)
(Autor, Normalansicht)
Verändert: 20c20,24
AspektOrientierteProgrammierung ist eine Art GenerativeProgrammierung. Der Ansatz ist, dass bestimmte Aspekte der erstellten Software in der klassischen OOP über die ganze Software verteilt und vermischt sind, obwohl sie sich getrennt und kompakt spezifizieren lassen.
Zum Beispiel die Spezifikation der Anforderung: "Jeder Aufruf einer Methode in diesem Package muss protokolliert werden." ist kompakt und einfach. Deren Umsetzung ist es in klassichen OOP Sprachen nicht. Um dies z.B. in Java zu implementieren muss jede Klasse in dem betroffenem Package geändert werden. So wird dieser Aspekt über den gesammten Quelltext verteilt und mit anderen Aspekten vermischt (denn die Methoden haben ja auch anderes zu tun).
AOP versucht dies zu lösen, indem es diese Verwebung der Aspekte einem CodeGenerator? oder CodeWeaver? überlässt. In AOP werden also die Klassen nicht wie in der klassischen OOP zusammenhängend programmiert, sondern nach Aspekten getrennt. Ein Aspekt kann dabei mehrere Klassen betreffen und eine Klasse kann duch mehrere Aspekte beinflusst werden.
Ein anderer Ansatz verfolg z.B. TransWarp? (in SprachePython), in dem Klassen zusammengesetzt werden können. Irgendwie so:
| CustomerClass = PersistentAspect + BillingCustomerAspect + ServiceCustomerAspect
myCustomer = CustomerClass() |
|
|
und dies erinnert mich irgendwie an HyperJ? von IBM: http://www.alphaworks.ibm.com/tech/hyperj.
- Und mich erinnert dies an das in den letzten Jahren zunehmend diskutierte FeatureOrientedProgramming FOP --kg
Informationen:
Implementierung auf Grundlage von Java: http://aspectj.org; http://aspectwerkz.codehaus.org; http://www.jboss.org/; http://nanning.codehaus.org/; https://dynaop.dev.java.net/ und andere. Ein Vergleich der verschiedenen Frameworks wäre interessant.
Implementierung auf Grundlage von C++: http://www.aspectc.org/
Als Einstieg in die generative und aspektorientierte Programmierung sind vielleicht die folgenden Links hilfreich:
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 17. September 2006 17:59 (diff))