next up previous contents index
Weiter: 8.4 Generische formale Hinauf: 8 Generische Einheiten Zurück: 8.2 Generische formale

8.3 Generische formale Typen

  

Als generische formale Typen sind erlaubt:

Dabei steht (<>) für einen beliebigen diskreten Typ; bei der Implementierung sind für Variable dieses Typs alle Operationen erlaubt, die für diskrete Typen erlaubt sind. Der Ausdruck range <> steht für ganzzahlige Typen, mod <> für modulare Typen, digits <> für Gleitkommazahlen, delta <> für Festkommazahlen und delta <> digits <> für Dezimalzahlen; bei der Implementierung stehen die entsprechenden Operationen zur Verfügung.

Für Array-Typen sind z.B. die Operationen des Zugriffs auf Komponenten und Slices erlaubt. Für Access-Typen kann man z.B. den New-Operator verwenden. Für private Typen ist nur die Zuweisung und die Abfrage auf Gleichheit und Ungleichheit erlaubt. Für limitierte private Typen sind nicht einmal diese erlaubt, daher sind alle benötigten Operationen mit den im Abschnitt 8.4 näher behandelten generischen Unterprogrammen zu realisieren.

Die folgende Tabelle gibt einen Überblick, welche Typen durch welche formale generische Typen festgelegt werden.

Formaler generischer Typ Festgelegter Typ
limited private die Klasse aller Typen
private die Klasse aller nicht limitierten Typen
tagged limited private die Klasse aller getaggten Typen
tagged private die Klasse aller nicht limitierten getaggten Typen

Wenn das Schlüsselwort abstract vorhanden ist, darf der aktuelle generische Parameter auch abstract sein.

Beispiele sind

type Element is private;
type Aufzaehlung is (<>);
type int is range <>;
type Volt is delta <>;
type Masse is digits <>;
type Tabelle is array (Aufzaehlung) of Element;
type Item is limited tagged private;

Weitere Beispiele finden sich in Kapitel 12 und 13.



next up previous contents index
Weiter: 8.4 Generische formale Hinauf: 8 Generische Einheiten Zurück: 8.2 Generische formale

Johann Blieberger
Wed Feb 11 09:58:52 MET 1998