Universität Ulm, Fakultät für Mathematik und Wirtschaftswissenschaften, SAI

WS 2000/01 || Entwicklung objekt-orientierter Bibliotheken || Beispiele

Collections-8


TestLists LinearLists Collections

Collections
Im Vergleich zum vorherigen Beispiel ist hier AddCollection hinzugekommen, das im Vergleich zu Add es erlaubt, nicht nur ein einzelnes Objekt, sondern alle Objekte einer anderen Kollektion hinzuzufügen.

Um Mißverständnisse zu vermeiden: Natürlich kann eine Kollektion auch bei Add angegeben werden -- dann ist allerdings die angegebene Liste Bestandteil der neuen Liste. Bei AddCollection werden alle Objekte der angegebenen Liste einzeln in die Zielliste eingehängt.

Demonstriert wird an diesem Beispiel die Überdefinierbarkeit dieser Operation. Die Operation läßt sich natürlich auf Basis der vorhandenen Operationen First, Next und Add realisieren. Es gibt aber Implementierungen bei denen eine effizientere Fassung möglich ist -- diese haben dann die Option, eine eigene verbesserte Fassung davon anzubieten.

Hier in diesem konkreten Beispiel wird allerdings davon nur Gebrauch gemacht, wenn beide Kollektionen von der gleichen Implementierung stammen, d.h. die gleiche Schnittstelle anbieten. Diese spezielle Technik ist in der Mehrheit der OO-Sprachen (sei es C++, Smalltalk oder Eiffel) nicht realisierbar, wenngleich immerhin bei CLOS (eine Lisp-Erweiterung).

LinearLists
Diese Implementierung unterstützt die Fähigkeit addCollection, da eine effizientere Variante angeboten kann, die dann bei beiden Listen direkt auf die internen Datenstrukturen zugreift.

TestLists
Ein zugehöriges Testmodul.

Die Quellen stehen als Shell-Archiv zur Verfügung.
WS 2000/01 || Entwicklung objekt-orientierter Bibliotheken || Beispiele

Andreas Borchert, 13. November 2000