SAI || Wintersemester 2000/01 || Entwicklung objekt-orientierter Bibliotheken || Übungen

Übungen zu Entwicklung objekt-orientierter Bibliotheken
Blatt 3 (7. 11. - 14. 11. 2000)


Aufgabe 4 (10 Punkte)

Wenn Aufträge 1st-class-Objekte sind, wäre es auch denkbar, Aufträge selbst in Listen zu verwalten, um sie ggf. später erneut zur Anwendung zu bringen, sei es auf dem gleichen oder einem anderen Objekt. Allerdings sind dann zwei Punkte zu beachten:

Führen Sie die entsprechenden Änderungen an dem Beispiel Collections-3 durch und kreieren Sie eine Implementierung für Collections die alle Operationen, die eine Änderung bewirken, aufsammelt und verfügbar hält:

DEFINITION Logfiles;

   IMPORT Collections;

   TYPE
      Logfile = POINTER TO LogfileRec;
      LogfileRec = RECORD (Collections.CollectionRec) END;

   PROCEDURE Create(VAR logfile: Logfile);
      (* create a logfile which looks like a normal collection
         but logs all modifying operations;
         note that `logfile' as collection remains empty
      *)

   PROCEDURE GetOps(logfile: Logfile;
                    VAR loggedOperations: Collections.Collection);
      (* returns the list of logged operations in `loggedOperations' *)

   PROCEDURE Apply(logfile: Logfile; on: Collections.Collection);
      (* apply all logged operations of `logfile' on `on' *)

END Logfiles.

Nun können Sie in einem Testszenario vor einer beliebigen Kollektion mit Hilfe von DribbleCollections einerseits die Original-Kollektion als primary erreichen und über secondary ein Logfile von Logfiles unterhalten. Dann besteht später die Möglichkeit, die aufgezeichneten Operationen auf einer anderen Kollektion loszulassen (via Apply) oder anzuschauen (via GetOps). Schreiben Sie ein Testprogramm, das ein entsprechendes Testszenario aufbaut und die aufgezeichneten Operationen später auf einer anderen Kollektion losläßt.

Fragen zu den Übungen oder zur Vorlesungen können Sie jederzeit per E-Mail stellen oder dazu (ggf. nach kurzer telefonischer Absprache) zu einem Besuch bei mir vorbeikommen.

Schicken Sie Ihre Lösung bis zum Abgabetermin am Dienstag, dem 14. November 2000, 17.00 Uhr mit folgendem Kommando:

abgabe oolib *.od *.om Makefile

Weitere Hinweise zur Vorlesung und zu den Übungen finden Sie im WWW unter "http://www.mathematik.uni-ulm.de/sai/ws00/oolib/".


SAI || Wintersemester 2000/01 || Entwicklung objekt-orientierter Bibliotheken || Übungen

Andreas Borchert, November 2000