FeatureC++

FeatureC++
FeatureC++ Precompiler
Entwickler Marko Rosenmüller
Aktuelle Version 0.7
(22. März 2010)
Betriebssystem Windows, Linux, Mac OS X
Kategorie Compiler
Deutschsprachig nein
FeatureC++ Webseite

FeatureC++ ist eine Erweiterung der Programmiersprache C++ zur Unterstützung featureorientierter Programmierung (FOP)[1]. Dazu erfolgt eine Dekomposition einer Software in Features, die gleichzeitig die Grundlage der Organisation des Programmcodes bilden. Ein Feature repräsentiert ein Inkrement in Programmfunktionalität ausgehend von einer festen Programmbasis und wird im Rahmen von FOP als modular implementiert. FeatureC++ vereint zudem FOP und aspektorientierte Programmierung (AOP) unter Verwendung von Aspectual Mixin Layers [2].

Technische Umsetzung

Die Umsetzung erfolgt durch Codetransformation von FeatureC++ Code in herkömmlichen C++ Code durch einen Precompiler. Ausgangspunkt ist die Organisation von Features in Verzeichnissen. Ein Verzeichnis enthält alle zu einem Feature gehörenden Klassen und Klassenverfeinerungen, die jeweils in einer Header-Datei spezifiziert werden. FeatureC++ erweitert die C++-Syntax um zwei neue Schlüsselwörter: super und refines. Das folgende Beispiel verdeutlicht die Arbeitsweise:
Definition von base.h in src/base:

#include <iostream>
 
class base {
public:
  void print() {
    std::cout << "base-print" << std::endl;
  }
};


Definition von base.h in src/ext1:

refines class base {
public:
  void print() {
    super::print();
    std::cout << "ext-print" << std::endl;
  }
};

base.h (in src/ext1) ist eine Erweiterung der base-Klasse aus src/base. super::print() wird durch die Methode print() aus der base-Klasse (src/base) ersetzt. Darüber hinaus lassen sich Member-Variablen oder neue Methoden einer Klasse hinzufügen (engl. static introduction). Eine Erweiterung kann auf anderen Erweiterungen aufsetzen. Dadurch ergibt sich eine lineare Erweiterungshierarchie. Die Reihenfolge der Anwendung von Erweiterungen wird in einer Datei spezifiziert. Der folgende Quelltext zeigt das Ergebnis nach dem FeatureC++-Compiler Lauf:

class base {
//**** Layer base ****
public:
  inline void base_print() {
    std::cout << "base-print" << std::endl;
  }
//**** Layer ext1 ****
public:
  void print() {
    base_print();
    std::cout << "ext-print" << std::endl;
  }
};

Weblinks

Einzelnachweise

  1. FeatureC++: On the Symbiosis of Feature-Oriented and Aspect-Oriented Programming. Abgerufen am 28. Dezember 2010.
  2. Aspectual Mixin Layers: Aspects and Features in Concert. Abgerufen am 28. Dezember 2010.

Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Aspekt-orientierte Programmierung — Die Artikel Aspektorientierte Programmierung und Cross Cutting Concern überschneiden sich thematisch. Hilf mit, die Artikel besser voneinander abzugrenzen oder zu vereinigen. Beteilige dich dazu an der Diskussion über diese Überschneidungen.… …   Deutsch Wikipedia

  • Aspektorientierung — Die Artikel Aspektorientierte Programmierung und Cross Cutting Concern überschneiden sich thematisch. Hilf mit, die Artikel besser voneinander abzugrenzen oder zu vereinigen. Beteilige dich dazu an der Diskussion über diese Überschneidungen.… …   Deutsch Wikipedia

  • Aspect-oriented programming — (AOP) is a programming paradigm that increases modularity by allowing the separation of cross cutting concerns.Separation of concerns entails breaking down a program into distinct parts (so called concerns , cohesive areas of functionality). All… …   Wikipedia

  • Feature Oriented Programming — (FOP) ist ein Programmierparadigma zur Entwicklung von Software Produktlinien. Grundlage der featureorientieren Programmierung sind Softwaremerkmale (Features), die bei Design und Implementierung als Elemente erster Ebene berücksichtigt werden.… …   Deutsch Wikipedia

  • Aspektorientierte Programmierung — (AOP) ist ein Programmierparadigma für die Objektorientierte Programmierung, um generische Funktionalitäten über mehrere Klassen hinweg zu verwenden (Cross Cutting Concern). Logische Aspekte eines Anwendungsprogramms werden dabei von der… …   Deutsch Wikipedia

  • Аспектно-ориентированное программирование — Парадигмы программирования Агентно ориентированная Компонентно ориентированная Конкатенативная Декларативная (контрастирует с Императивной) Ограничениями Функциональная Потоком данных Таблично ориентированная (электронные таблицы) Реактивная …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”