Mit Hilfe von generischen Einheiten lassen sich wiederverwendbare Software-Komponenten besonders vorteilhaft gestalten (siehe z.B. [Boo87a]). Damit ergibt sich auch die nicht unbedingt einfache Aufgabe, Bibliotheken von wiederverwendbaren und mehr oder minder öffentlich zugänglichen Software-Komponenten anzulegen und zu verwalten. Ein solcher Ansatz findet sich beispielsweise in [Con87].
Als Beispiel, wie solche Bibliothekseinträge aussehen könnten, betrachten wir einen Stack beliebiger Größe:
generic
Eine Instantiierung dieses generischen Paketes könnte etwa lauten:
package Integer_Stack is new Stack(Element =
Eine mögliche Verwendung dieser Instanz könnte folgenderweise aussehen:
for i in 1 .. N loop
Integer_Stack.Push (E =
end loop ;
declare
i: integer;
begin
loop
Integer_Stack.Pop (E =
-iverarbeiten
end loop;
exception
when Integer_Stack.Stack_Ist_leer =
null;
end;
Im zweiten Teil dieses Programmfragmentes ist es nicht notwendig zu wissen, wieviele Elemente tatsächlich auf dem Integer_Stack liegen, das Ende wird über die ausgelöste Exception ermittelt.
Es gibt nun verschiedene Arten von generischen Parametern, nämlich: generische formale Objekte, generische formale Typen, generische formale Unterprogramme und generische formale Pakete Diese Parameter werden wir im folgenden erläutern. Für alle diese Parameter gilt, daß sie zwischen dem Schlüsselwort generic und einem der Schlüsselwörter procedure, function oder package stehen müssen.
Johann Blieberger