Universität Ulm,
Fakultät für Mathematik und Wirtschaftswissenschaften,
SAI
WS 2000/01 || Entwicklung objekt-orientierter Bibliotheken || Beispiele
Abstraktionen auf Basis von Schnittstellenrecords
Die vorgestellten Techniken der vorherigen Beispiele
auf Basis von Aufträgen sind zwar recht flexibel bis zur
Unterstützung der Delegation selbst unbekannter Operationen,
jedoch verbleiben einige Nachteile:
-
Es ist unklar, welche Operationen von einem Objekt bearbeitet werden
können und welche unbekannt sind.
Dies läßt sich nur im Nachhinein auf Basis von
Erledigungsvermerken feststellen.
-
Zwischen dem Aufruf der Operation und der eigentlichen
Durchführung liegen zwei andere Prozeduren:
eine, die den Auftrag verpackt,
und ein zentraler Auftragnehmer,
der Aufträge auf weitere lokale Prozeduren verteilt.
Diese Probleme lassen sich auf Basis von Schnittstellenrecords
lösen, wie die hier zusammengestellten Beispiele zeigen:
- Collections-4
-
Diese Fassung entspricht in ihrer Einfachheit der
ersten Version auf Basis von Aufträgen.
Bemerkenswert ist hier insbesondere die Vereinfachung
von LinearLists,
da hier
der Handler
völlig wegfällt.
- Collections-5
-
Analog zum
ersten Erweiterungsbeispiel
auf Basis von Aufträgen zeigt dieses Beispiel,
daß auch auf Basis von Schnittstellenrecords Erweiterungen
(wie z.B.
OrderedCollections)
problemlos möglich sind.
- Collections-6
-
Die Vorteile beider Techniken können kombiniert werden,
so daß für die Basisabstraktion ein Schnittstellenrecord
verwendet wird, während die Erweiterungen Aufträge verwenden.
Auf dieser Basis sind wieder Delegation von unbekannten Operationen
möglich wie dieses Beispiel analog zum
vorherigen Beispiel zeigt.
- Collections-7
-
Bei der Verwendung von Schnittstellenrecords ist es
möglich und sinnvoll, das Konzept der Fähigkeiten einzuführen
und so einige wichtige Varianten gleich in die Basisabstraktion
zu integrieren.
Dieses Beispiel zeigt wie OrderedCollections in
Collections integriert werden kann, ohne
daß alle Kollektionen geordnet sein müssen.
- Collections-8
-
Dieses Beispiel zeigt, daß die Basisabstraktion
gewisse Operationen selbst definieren kann
(z.B. auf Basis anderer Operationen),
die bei Bedarf (z.B. wenn Effizienzverbesserungen möglich sind),
von den Implementierungen überdefiniert werden können.
WS 2000/01 || Entwicklung objekt-orientierter Bibliotheken || Beispiele
Andreas Borchert, 13. November 2000