SAI ||
Wintersemester 1997/98 ||
Entwicklung objekt-orientierter Bibliotheken ||
Übungen
Übungen zu Entwicklung objekt-orientierter Bibliotheken
Blatt 4 (7. 11. - 14. 11. 1997)
Aufgabe 7 (20 Punkte)
Schreiben Sie ein Oberon-Modul, das analog zum Vorlesungsbeispiel
Collections
eine Abstraktion definiert, und zwar für assoziative Arrays.
Halten Sie sich dabei an das Interface-Record-Modell.
Ein assoziatives Array, aufgrund der typischen Implementierungsart auch
hash
genannt,
ist eine ungeordnete Menge von Objekten, auf die über eindeutige
Namen zugegriffen wird.
Folgende Operationen sollte die Abstraktion unterstützen:
-
Hinzufügen bzw. Ersetzen eines Objekts mit einem bestimmten Schlüssel,
-
Entfernen eines bestimmten Schlüssels,
-
Bestimmen des zu einem Schlüssel gehörenden Objekts bzw. der
Tatsache, daß der gegebene Schlüssel nicht belegt ist,
-
Bestimmen der Kardinalität des assoziativen Arrays (d.i. die Anzahl
der Schlüssel-/Objektpaare),
-
Sequentielles Durchlaufen aller Schlüssel-/Objektpaare, wobei die
Reihenfolge nicht definiert ist.
Verwenden Sie für die Schlüssel den Datentyp
String
aus dem Bibliotheksmodul
ConstStrings
(siehe Manualseite).
Schreiben Sie ein weiteres Oberon-Modul, das diese Abstraktion auf
einfache, nicht notwendigerweise effiziente Weise in einer dynamischen
Datenstruktur implementiert.
Fügen Sie ein Hauptprogramm hinzu, das diese Implementierung benutzt,
um alle in der Standardeingabe mehrfach auftretenden Zeilen zu
bestimmen.
Die Ausgabe soll aus je einer ganzen Zahl (für die Häufigkeit),
gefolgt von einem Tab-Zeichen
(ASCII.tab)
und der Originalzeile für jede mindestens zwei Mal eingegebene Zeile
bestehen, wobei die Reihenfolge gleichgültig ist.
SAI ||
Wintersemester 1997/98 ||
Entwicklung objekt-orientierter Bibliotheken ||
Übungen
Martin Hasch, November 1997