next up previous contents index
Weiter: 8 Generische Einheiten Hinauf: 7 Pakete Zurück: Getrennte Übersetzbarkeit

7.5 Benutzerdefinierte Initialisierung, Zuweisung und Finalisierung

Für diese drei grundlegenden Operationen existieren von der Sprache vordefinierte Operationen, der Programmierer hat jedoch die Möglichkeit, sie selbst zu definieren. Dies geschieht durch sogenannte kontrollierte Typen.  

Der Programmierer kann drei Prozeduren definieren: Initialize wird nach der defaultmäßigen Initialisierung aufgerufen, Adjust als letzter Teil der defaultmäßigen Zuweisung (eines Objekts eines nicht-limitierten Typs) und Finalize, bevor die Finalisierung der Teile des Objekts durchgeführt wird.

Ein kontrollierter Typ ist eine Typerweiterung des Typs Controlled, der im Paket Ada.Finalization definiert ist:

package Ada.Finalization is
type Controlled is abstract tagged private;

procedure Initialize(Object: in out Controlled);
procedure Adjust (Object: in out Controlled);
procedure Finalize (Object: in out Controlled);

type Limited_Controlled is abstract tagged limited private;

procedure Initialize(Object: in out Limited_Controlled);
procedure Finalize (Object: in out Limited_Controlled);
private
...
end Ada.Finalization;

Bei einer normalen Zuweisung eines privaten kontrollierten Typs der Form a := b werden folgende Operationen ablaufen:

  1. Finalize(a);
  2. Initialize(a);
  3. Kopieren von b nach a
  4. Adjust(a);


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