next up previous contents index
Weiter: 8.1 Ein einleitendes Hinauf: Ada - Ein Überblick Zurück: 7.5 Benutzerdefinierte Initialisierung

8 Generische Einheiten

     

Generische Einheiten in Ada sind in etwa vergleichbar den in manchen Assemblersprachen üblichen Makros. Eine generische Einheit ist eigentlich eine Art Schablone, die durch den Vorgang der Instantiierung   funktionsfähig wird. In Ada wird zwischen generischen Unterprogrammen    und generischen Paketen    unterschieden. Wichtig ist, daß für solche Einheiten generische Parameter    definiert werden können. Bevor wir fortfahren, ein Beispiel:

generic
type Element is private;
procedure Vertausche(a,b: in out Element);

Das ist die Deklaration einer generischen Prozedur  , die die Werte der Parameter vertauschen soll. Da der Typ der Parameter uninteressant ist, wird er als generischer Parameter in Form eines privaten Typs vereinbart. Damit wird bewirkt, daß keinerlei Anforderungen an Operationen dieses Typs gestellt werden, außer daß es möglich sein muß, Werte zweier Variablen dieses Typs einander zuzuweisen und sie eventuell auf Gleich- und Ungleichheit zu testen.

Eine entsprechende Implementierung könnte etwa lauten:

procedure Vertausche(a,b: in out Element)
is
h: Element;
begin
h := a;
a := b;
b := h;
end Vertausche;

Die Implementierung erfolgt also wieder gänzlich unabhängig vom Typ der zu vertauschenden Werte in dem Sinne, daß nur der generische Parameter verwendet wird.

Beispiele für Instantiierungen lauten etwa:

procedure Vertausche_integer is new Vertausche(Element => integer);
procedure Vertausche_Datum is new Vertausche(Element => Datum);





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