Verbund (Datentyp)
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).