Glossar
  Ziffern, Zeichen | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z
 
   
Z Zeiger -
Verkürzt für Zugriffsobjekt. Zugehörigkeitstest -
Mittels der Zugehörigkeitstests "in" und "not in" kann man feststellen, ob sich ein Wert in einer vorgegebenen Menge von Werten befindet. Zugehörigkeitstests liefern als Ergebnis False oder True.

Zugriff auf Unterprogramme -
Spezielle Klasse von Zugriffstypen. Ein Objekt eines solchen Typs kann auf eine Menge schnittstellenkompatibler Unterprogramme (Prozeduren und Funktionen) verweisen.

Zugriffsdiskriminanten -
Diskriminantenkomponenten eines Verbundes, die von einem Zugriffstyp sind.

Zugriffsebene -
Der Begriff Zugriffsebene beschreibt den erlaubten Verweis von Zeigern auf Objekte, damit ein Zeiger ausschließlich auf existierende Objekt verweist.
Eine Zugriffsebene ist tiefer als eine andere, falls sie (zur Laufzeit) tiefer geschachtelt ist. Es ist nicht erlaubt, daß ein Zeiger auf ein Objekt zeigt, das tiefer geschachtelt ist als die Typdefinition. Damit wird erreicht, daß das Objekt auch solange existiert wie die Typdefinition.
Die genaue Definition von Zugriffsebene (accessibility levels) in Form eines Regelwerks wird im LRM 3.10.2 aufgeführt.
Wird die Zugriffsebene Z, in der der Zugriffstyp deklariert wurde, (in Richtung auf die nächst höhere) verlassen, so können (!) alle Objekte, die zu diesem Zugriffstyp alloziert wurden, (automatisch) deallozieren werden. Werden sie nicht dealloziert, so wird der allozierte Speicherplatz anonym, d. h. er ist über die Speicherplatzverwaltung nicht mehr verfügbar. Das kann dazu führen, daß, wenn die Zugriffsebene Z bei rekursiven oder iterativen Verfahren immer wieder eröffnet und verlassen wird, der verfügbare Speicherplatz zur Allozierung ausgeschöpft wird. In diesem Fall wird die Ausnahme storage_error ausgelöst. Daher sollte jedes allozierte Objekt, wenn es nicht mehr benötigt wird, auch dealloziert werden.
Ob alle Objekte zu einem Zugriffstyp dealloziert werden, wenn die Zugriffsebene verlassen wird, ist der Implementierung eines Ada-Compilers freigestellt. Unterdrücken läßt sich dieser Mechanismus (wenn vorhanden) durch das Pragma controlled. Angewendet auf einen (nicht abgeleiteten) Zugriffstyp, teilt dieses Pragma dem Compiler mit, das Objekte, auf die mit diesem Zugriffstyp verwiesen wird, nicht (automatisch) freigegeben werden dürfen, wenn die Zugriffsebene verlassen wird. Siehe auch Speicherbereinigung.
Beispiel 1:
...
type Int_Zeiger is access all Integer;
function F return Int_Zeiger is
I : aliased Integer;
Z : Int_Zeiger;
begin
Z := IAccess; --> Diese Anweisung ist nicht illegal,
return Z; -- da I eine Ebene tiefer als die Definition
end F; -- des Typs Int_Zeiger ist. Das ist sinnvoll,
... -- da das Objekt I nur solange exsitiert, wie
-- die Funktion durchlaufen wird.
Ein allgemeiner Zeiger kann nur in seiner Zugriffsebene benutzt werden.
Beispiel 2:
...
type Int_Zeiger is access all Integer;
function F (Z : Int_Zeiger) return Int_Zeiger is
begin
return Z;
end F;
I : aliased Integer := 2;
P : Int_Zeiger;
begin
P := F (IAccess);
...
Zeiger auf aliased Objekte können aber an Unterprogramme über- und zurückgeben werden.
Beispiel 3:
type Int_Zeiger is access all Integer;
function F return Int_Zeiger is -- Fehlerbehaftete Funktion.
I : aliased Integer;
Z : Int_Zeiger;
begin
Z := IUnchecked_Access; -- Legal aber fehlerbehaftet.
return Z;
end F;
Mit unchecked_access können auch Objekte referenziert werden, die unterhalb der Zugriffsebene der Typvereinbarung liegen. Das skizzierte Verfahren ist sicher, wenn ein Objekt referenziert wird, das in einem Paket vereinbart ist, dessen Lebensdauer die des Programms ist. Das Beispiel ist ein legales Programm; die Ausführung wird aber genau dann fehlerbehaftet (fehlerbehaftete Ausführung), wenn der Rückgabewert der Funktion referenziert wird.
Beispiel 4:
...
type Int_Zeiger is access Integer;
function F return Int_Zeiger is
Z : Int_Zeiger;
begin
Z := new Integer; -- Legal und auch korrekt.
return Z;
end F;
...
Ein dynamisch erzeugtes Objekt hat immer dieselbe Zugriffsebene wie die zugehörige Typdefinition.

Zugriffsobjekt -
Ein Zugriffsobjekt, das nicht auf null verweist, referenziert entweder ein Objekt oder ein Unterprogramm. Siehe auch Zugriffstypen.

Zugriffstypen -
Zugriffstypen verweisen auf typisierte Objekte und haben die Voreinstellung null, d. h. eine Variable eines Zugriffstyps wird (automatisch) mit null initialisiert.
Zugriffstypen unterscheiden sich in typisierte,
denen nur (mit einem Allokator) dynamische Objekt zugewiesen werden können,
oder allgemeine,
denen dynamische und statische Objekte zugewiesen werden können.
Statische Objekte sind nicht durch einen Allokator angelegte Objekte, z. B. lokale Variable. Siehe auch Zugriffsebene.
Beispiel:
-- typisierte Zeigerdefinition
type Int_Zeiger is access Integer;
-- allgemeine Zeigerdefinition
type All_Int_Zeiger is access all Integer;
Objekt : aliased Integer := 0; -- ist statisch.
Z1 : Int_Zeiger := Null;
Z2 : All_Int_Zeiger := Null;
begin
Z1 := new Integer;
Z1 := ObjektAccess; -- Diese Anweisung ist illegal.
Z2 := new Integer;
Z2 := ObjektAccess;

Zuordnung über Namen -
Eine Zuordnung über Namen spezifiziert die Zuordnung eines Elements zu einer oder mehreren Positionen in einer Liste durch Nennung der Positionen. Eine Zuordnung über Namen kann bei Parameterlisten, Reihungen und Verbunden verwendet werden.
Beispiel: Bei Parameterlisten werden die Aktualparameter durch Nennung der Formalparameter abgebildet.

Suche_Datei ( Name => "SCHMIDT",
Datum => "05.02.95",
Index => EINTRAG_NUMMER);

Zuordnung über die Position -
Eine Zuordnung über die Position spezifiziert die Zuordnung eines Elements mit einer Position in einer Liste, indem die gleiche Position im Text benutzt wird, um das Element zu spezifizieren. Eine Zuordnung über die Position kann bei Parameterlisten, Reihungen und Verbunden verwendet werden.
Beispiel: Bei Parameterlisten werden die Aktualparameter durch Beibehaltung der vorgegebenen Reihenfolge auf die Formalparameter abgebildet.

Suche_Datei ( "SCHMIDT",
"05.02.95",
EINTRAG_NUMMER);

Zusammengesetzter Typ -
Ein zusammengesetzter Typ ist ein Typ, dessen Werte Komponenten haben. Es gibt zwei Arten von zusammengesetzten Typen: Reihungstypen und Verbundtypen.

Zuteilungsverfahren -
Ein Zuteilungsverfahren ordnet Prozessen, die auf einem Prozessor ablaufen sollen, in geeigneter Weise die Prozessorkapazität zu. Bekannte Verfahren sind z. B. das Zeitscheibenverfahren (jedem Prozeß wird evtl. von Prioritäten abhängig die Prozessorkapazität für ein Zeitintervall zugeteilt) und das Vielfraßverfahren (ein Prozeß behält die Prozessorkapazität, bis er sie freiwillig abgibt). Siehe auch Scheduling-Algorithmus.

Zuweisung -
Eine Zuweisung ist die Operation, welche den aktuellen Wert einer Variablen durch einen neuen Wert ersetzt. Eine Zuweisungsanweisung spezifiziert auf der linken Seite eine Variable und auf der rechten Seite einen Ausdruck, dessen Wert der neue Wert der Variablen ist.

Zweistelliger Operator -
Ein Operator mit zwei Argumenten, z. B. "2 + 3"


 

 zurück Ada Tour - Dokumentation  © 2003 Förderverein Ada Deutschland e.V.