Traits
 
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern

Der Begriff "Traits" wird nicht einheitlich verwendet:

Traits im Sinne von MixIn

Eine neue Variation zum Thema Vererbung. Traits sind eine Weiterentwicklung der MixIns. Mit Traits werden klassische Probleme der Mehrfachvererbung angegangen.

In Java gibt es keine Traits: Diskussionsbeiträge:
Traits in C++

In C++ steht der Begriff Traits für eine wichtige Technik der generischen Programierung (GenerischeProgrammierung): Eine Traits-Klasse stellt die Charakteristiken eines Typs zur Verfügung, die ein generischer Algorithmus für die korrekte Behandlung des Typs benötigt, aus dem Typ selbst aber nicht ermittelt werden können. Mit dem Begriff Charakteristiken sind dabei sowohl Daten (z. B. Konstanten und Typen), als auch Verhaltensweisen (Funktionen) gemeint.

Mit Traits-Klassen kann man also Informationen an einen Typ anhängen; dies ist insbesondere dann interessant, wenn diese Informationen nicht in den Typ selbst eingebaut werden können (z. B. Basistypen oder Typen aus fremden Bibliotheken).

Das Paradebeispiel für einen generischen Algorithmus mit Traits ist vermutlich die Funktion qsort() aus der C-Standardbibliothek. Neben dem (typlosen) Zeiger auf ein Datenfeld und der Zahl der darin enthaltenen Elemente benötigt qsort() zwei Charakteristiken des Elementtyps: Die Größe eines Elements, und eine Funktion, die die Sortierreihenfolge zweier Elemente liefert. Mit diesen Informationen kann qsort ein Feld aus Elementen eines ansonsten unbekannten Typs sortieren.

Die Implementierung von Traits-Klassen als Templates ist die übliche Vorgehensweise, da so der Compiler die zum Typ gehörigen Traits automatisch ermitteln kann und dabei auch Typsicherheit garantiert. Auch ist es nur mit Templates möglich, Typen als Charakteristiken bereitzustellen. Wie das Beispiel qsort() zeigt, benötigen Traits jedoch nur ein generisches, also typunabhängiges Interface, unter dem typspezifisches Verhalten implementiert ist. Dies läßt sich auch durch eine abstrakte Basisklasse und davon abgeleitete Traits-Klassen realisieren.

Siehe auch:


KategorieOop KategorieProgrammierSprachenKonzepte


StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 26. August 2008 8:51 (diff))
Suchbegriff: gesucht wird
im Titel
im Text