Zum Inhalt springen

Verbund (Datentyp)

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 4. Januar 2007 um 18:05 Uhr durch Bautsch (Diskussion | Beiträge) (en:Object composition). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Ein Verbund (auch Record, Struct genannt) ist ein aus Komponenten verschiedener Typen zusammengesetzter Datentyp. Da die Komponenten eines Verbunds wieder Verbünde sein können, können beliebig komplexe Datenstrukturen definiert werden.

Solche Verbünde gibt es in prozeduralen Programmiersprachen wie C oder Pascal. In C heißen sie struct und in Pascal record.

In vielen Programmiersprachen existieren Möglichkeiten, die Speicherbereiche von Verbünden unterschiedlich zu interpretieren. Diese Strukturen werden variante Verbünde oder Unions genannt. Bei deren Verwendung ist jedoch in der Regel keine Typsicherheit gegeben.

In einigen rein objektorientierten Sprachen, wie Smalltalk oder Java, sind Verbünde daher nicht vorgesehen. Dadurch dass auf ihre Elemente normalerweise direkt zugegriffen werden kann, wird gegen das Prinzip der Kapselung verstoßen. Andere rein objektorientierten Sprachen, wie zum Beispiel Oberon oder Component Pascal verwenden erweiterte Verbünde, bei denen auf sehr einfache Art und Weise Methoden und Sichtbarkeitsregeln (Exportkennzeichnungen) definiert werden können, um Vererbung zu modellieren.

Ein Datensatz ist eine Instanz eines Verbunds.

Beispiele

Ein Verbund vom Datentyp Person für eine Instanz Mustermann könnte in Component Pascal zum Beispiel folgendermaßen definiert und verwendet werden:

MODULE Personen;

IMPORT Dates;

TYPE Person =
   RECORD
      Vorname, Name, Wohnort: ARRAY 256 OF CHAR;
      Geburtstag: Dates.Date;
   END;

VAR Mustermann: Person;

BEGIN
   Mustermann.Vorname          := "Hans";
   Mustermann.Name             := "Mustermann";
   Mustermann.Wohnort          := "Musterstadt";
   Mustermann.Geburtstag.day   :=    1;
   Mustermann.Geburtstag.month :=    1;
   Mustermann.Geburtstag.year  := 1900;
END Personen.

Der importierte im Modul Dates definierte Datentyp Dates.Date ist wiederum ein Verbund mit den ganzzahligen Elementen day (Tag), month (Monat) und year (Jahr).

Siehe auch