Feature Oriented Programming
 
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern

Veränderung (letzte Änderung) (keine anderen Diffs, Normalansicht)

Verändert: 28c28,30
* Aspectual Mixin Layers: Aspects and Features in Concert
* Aspectual Mixin Layers: Aspects and Features in Concert

Siehe auch: WardsWiki:FeatureDrivenDevelopment

Als Eindeutschung wird auch merkmals-orientierte Programmierung verwendet: Ein Versuch, Wiederverwendbarkeit, Modularisierungsgrad und Konfigurierbarkeit objekt-orientierter Software auf einer feinkörnigeren Ebene weiter voran zu treiben. Zugleich soll dadurch unnötige Wiederholung immer gleicher Codefragmente in verschiedenen Methodenrümpfen vermieden werden (wie dies z.B. in C++ durch Makros angestrebt wird).

Ein wesentlich anderer Ansatz mit ähnlicher allgemeiner Zielsetzung ist die AspektOrientierteProgrammierung.

In der aspekt-orientierten Programmierung strebt man dieses Ziel an, indem man separat definierte Codefragmente zur Compilierzeit nach vorgeschriebenen formalen Regeln an bestimmten Stellen (z.B. am Beginn oder Ende des Rumpfes bestimmter oder aller Methoden einer Klasse) "einwebt", z.B. wenn man jeden Aufruf einer oder aller Methoden protokollieren oder auf Zulässigkeit (Erfüllung von Vorbedingungen) prüfen möchte.

Die merkmals-orientierte Programmierung arbeitet im Unterschied dazu nicht mit Codefragmenten unterhalb der Methoden-Ebene, sondern zielt darauf, Anwendungsklassen aus einem Basis-Feature durch Hinzufügen weiterer, wählbarer Features zusammenzusetzen. Dabei wird ein Merkmal/Feature i.a. ähnlich wie ein Interface in Java beschrieben.

Die Features können nach dem Zusammensetzen miteinander interagieren, was i.a. die Notwendigkeit mit sich bringt, die betroffenen Methoden der beteiligten Features zu re-implementieren. Deshalb sind i.a. nicht nur spezielle Ausdrucksmittel vorgesehen, die das Zusammensetzen von Merkmalen/Features beschreiben, sondern auch solche, die das Auflösen von Feature-Interaktionen spezifizieren.

Beispiel:

Basis-Feature: Die elementare Funktionalität eines Stacks mit den üblichen push- und pop-Methoden.

Hinzugefügtes Feature: Ein Zähler/Counter, der die aktuelle Zahl der Stack-Elemente zurückgibt.

Es ist klar, dass die push/pop-Methoden re-implementiert werden müssen, damit der Counter immer den aktuellen Zählerstand wiedergibt.

In der aktuellen Fachdiskussion geht es hauptsächlich um sprachliche Ausdrucksmittel für die Feature-Spezifikation und -Zusammensetzung und um Verfahren, dies alles übersichtlich, handhabbar und fehlerunempfindlich zu machen. Siehe z.B.

wo auch das Stack-Beispiel ausführlicher dargestellt wird.

Darüber hinaus gibt es Versuche, aspekt- und merkmals-orientierte Programmierung miteinander zu "verheiraten". Siehe z.B.

Siehe auch: WardsWiki:FeatureDrivenDevelopment
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 15. Februar 2007 14:58 (diff))
Suchbegriff: gesucht wird
im Titel
im Text