8. Implementierung mit Reihung Inhaltsverzeichnis 10. Flexible Reihung

9. Objektdiagramm der Reihungsimplementierung

Das folgende Objektdiagramm stellt die obige Implementierung dar:

Abbildung 19: Reihungsimplementierung der Warteschlange

Die (namenlose) Referenz in der oberen linken Ecke ist eine Variable im Benutzerprogramm, in die die Adresse des (mit new) erzeugten ArrayQ-Objekts gespeichert wird. Dieses Objekt enthält (wie aus dem Programm ersichtlich) vier[1] globale Variablen: anzahl, ältestes und jüngstes sind Int-Variablen, inhalt ist eine Referenzvariable. Diese letzte enthält die Adresse eines Reihungsobjekts vom Typ Array[E]. Das Reihungsobjekt besteht aus einer Anzahl von Referenzen auf Objekte vom Typ E – diese sind die in der Warteschlange gespeicherten Elemente. ältestes und jüngstes enthalten Indizes der Reihung. Je nach der aktuellen Anzahl der gespeicherten Elemente enthalten sie einen Wert zwischen 0 und length-1 und damit zeigen sie (nicht als Referenzen, sondern als Indizien) in die Reihung. Diesen Umstand haben wir mit punktierten Pfeilen dargestellt.

Dieses Objektdiagramm stellt nur die grundsätzliche Datenstruktur dar; die ausführliche Funktionsweise kann nur über mehrere (oder animierte) Objektdiagramme demonstriert werden, die den Ablauf des Programms Schritt für Schritt zeigen. Es ist wichtig, die richtigen Aufnahmezeitpunkte für die Schnappschüsse zu bestimmen. Beispielsweise wäre es sinnvoll, im folgenden Programmausschnitt (aus einem Benutzerprogramm) nach jeder Zeile ein neues Diagramm anzufertigen:

val q = new ArrayQ[Int](3) // leere Warteschlange mit 3 Plätzen

q.add(1) // Warteschlange mit einem Element

q.add(2); q.add(3) // volle Warteschlange

q.remove; q.remove // Warteschlange mit leer gewordenen Plätzen

q.add(4) // Warteschlange nach dem Überlauf

Hierbei verändern sich die Objektvariablen und der Inhalt des Reihungsobjekts in jedem Schritt.

Ggf. ist es sinnvoll, auch ein Benutzerprogramm mit zwei Queue-Objekten darzustellen.

8. Implementierung mit Reihung Inhaltsverzeichnis 10. Flexible Reihung


[1] Der Klassenparameter size gehört auch zu den Objektvariablen; weil er aber unveränderbar ist, muss sie nicht unbedingt dargestellt werden.


Version: 5. Dezember 2010

© Prof. Solymosi, 2010, Beuth-Hochschule für Technik Berlin