4. Typen und Datenstrukturen | ||||||||||
|
||||||||||
4.3.2.2 Verbundtypen
Verbunde (record_definition <BNF>) sind sehr flexible und mächtige Hilfsmittel zum Aufbau komplexer Datenstrukturen. Zusammen mit Zugriffstypen bilden sie die Grundlage der Implementierung von rekursiven Datenstrukturen wie Listen, Bäumen, Graphen. Mit der Möglichkeit der Typerweiterung dienen sie auch der objektorientierten Spracherweiterung. Während Reihungstypen aus Komponenten des gleichen Typs bestehen, können Verbunde Komponenten unterschiedlicher Typen enthalten. Die Namen der Komponenten müssen alle unterschiedlich sein. Es gibt verschiedene Arten von Verbunden: Einfache Verbunde Einfache Verbunde sind eingeschränkte Typen. Alle Objekte eines solchen Typs haben die gleiche Größe sowie die gleiche Art und Anzahl von Komponenten. Solche Verbundtypen ohne Diskriminanten dienen dazu, Objekte gleicher Struktur und Größe anzulegen. Die Deklaration
enthält die beiden Komponenten Length und Data. Das folgende Fragment zeigt, wie man Objekte des Typs deklarieren und mit Aggregaten auf sie zuweisen kann und wie man auf die Komponenten mit Punktnotation zugreift:
Gemeinsame Deklaration von Komponenten Enthalten Verbunde mehrere Komponenten gleichen Typs, so können sie in einer Deklaration gemeinsam angegeben werden (wie bei anderen Deklarationen auch), z. B. ist
eine Kurzfassung der folgenden äquivalenten Deklaration.
Vorbesetzung von Komponenten Bei der Typdeklaration können Komponenten vorbesetzt werden, z. B.:
Von der Möglichkeit der Vorbesetzung sollte Gebrauch gemacht werden, wann immer dies sinnvoll ist. Die Vorbesetzung hat zur Folge, daß sämtliche Objekte, die von solchen Verbundtypen deklariert werden, ohne explizite Vorbesetzung bei der Objektvereinbarung die Vorbesetzung der Typvereinbarung erhalten. Die Vereinbarungen
führen dazu, daß sowohl Z1 als auch Z2 im Ursprung der komplexen Zahlenebene liegen. Verbunde mit Diskriminanten Verbunde mit Diskriminanten sind uneingeschränkte Typen, bei denen verschiedene Objekte unterschiedliche Größe (aufgrund unterschiedlicher Größe von Komponenten oder aufgrund unterschiedlicher Struktur andersartiger Komponenten) und Struktur haben können. Von Verbundtypen mit Diskriminanten können also Objekte veränderlicher Größe und Struktur vereinbart werden. Zulässige Typen von Diskriminanten sind die diskreten Typen (ganzzahlige und Aufzählungstypen) sowie in Ada 95 auch Zugriffstypen. Diskriminanten können zur Dimensionierung von Komponenten dienen, die von einem uneingeschränkten Feldtyp sind.
Die Deklaration und Benutzung von Zeichenketten dieser Art geschieht wie folgt:
Objekte vom Typ dynamic_string können ohne Angabe des Diskriminatenwertes deklariert werden, da die Diskriminante mit 0 vorbesetzt ist. Diskriminanten können auch zum Aufbau einer varianten Struktur der Verbunde eingesetzt werden (variant_part <BNF>).Die Benutzbarkeit und damit der Nutzen varianter Verbunde ist ohne den gleichzeitigen Einsatz von Zugriffstypen stark eingeschränkt. Verbunde mit Diskriminanten sind uneingeschränkte Typen wie die uneingeschränkten Reihungstypen. Der Datenbank einer Personalabteilung könnte etwa folgender Datentyp zugrundeliegen:
Diese Typdeklaration enthält zunächst vier Komponenten, die bei beiden Varianten vorhanden sind. In der Case-Anweisung werden dann die unterschiedlichen Variablen vereinbart. |
||||||||||
|