SAI ||
Wintersemester 1997/98 ||
Entwicklung objekt-orientierter Bibliotheken ||
Übungen
Übungen zu Entwicklung objekt-orientierter Bibliotheken
Blatt 8 (15. 12. 1997 - 16. 1. 1998)
Aufgabe 15 (10 Punkte)
Wenn eine sehr große Datenkollektion vorliegt und nur
temporär einige Änderungen vorgenommen werden sollen,
ist es normalerweise notwendig, die gesamte Kollektion
zu duplizieren, wenn das Original selbst unberührt bleiben soll.
Hier können Filter sehr sinnvoll sein, wenn sie
modifizierende Operationen lokal bei sich behandeln und
lesende Operationen weitergeben, sofern sie nicht durch lokale
Modifikationen betroffen sind.
Entwickeln Sie einen entsprechenden Filter für
Dictionaries,
der
-
bei
Add
die Tupel bei sich einträgt,
-
bei
Remove
ggf. den Schlüssel lokal entfernt und
einen Negativeintrag vermerkt,
-
bei
Get
zuerst lokal nachsieht und dann bei der
dahinterliegenden Kollektion und
-
bei
GetEntries
unter Berücksichtigung des Sortierkriteriums
(falls von der gefilterten Kollektion unterstützt) und
der Negativeinträge beide Kollektionen zusammenführt.
Auf diese Weise wird die Illusion einer echten Kopie aufrechterhalten,
die nur gestört wird, falls bei der gefilterten Kollektion
Modifikationen durchgeführt werden.
Dies läßt sich aber mit weiteren Filterobjekten vermeiden,
so daß (z.B. analog zu RCS) mit einem Versionsbaum gearbeitet werden
kann.
Sie können als Ausgangsbasis eine der Lösungen
(sei es von Ihnen oder die Musterlösung) zu
Blatt 6
oder
Blatt 7
verwenden.
Die Filterimplementierung sollte
Forwarders
und eine objektbezogene Ausnahmenbehandlung unterstützen
analog zu
Aufgabe 13.
SAI ||
Wintersemester 1997/98 ||
Entwicklung objekt-orientierter Bibliotheken ||
Übungen
Andreas Borchert, 15. Dezember 1997