Download Konzeptionelle und technische Weiterentwicklung eines
Transcript
Seite 54 Kapitel 3 - Einsatz der Frameworktechnik Im Unterschied zu Interviews enthält ET++ als Application-Framework neben einfachen Elementen zur Programmierung der graphischen Benutzungsoberfläche vor allem auch die Klassen Application und Document. [Pree94] betont, daß erst die Kombination dieser Elemente Erscheinung und Umgang mit den so erstellten Anwendungen vereinheitlicht. „The application framework ET++ provides elementary user interface building blocks (for example, buttons and menus), basic data structures (for example, the classes ObjList, ObjArray) and high-level application components such as the classes Application, Document, View, Command, and Window. Together with the elementary building blocks the high-level application components predefine as far as possible the look and feel of ET++ applications.“ [Pree94] Abgesehen von einzelnen Klassen, die wie einfache Typen der Sprache behandelt werden (z.B. String, Point), leiten sich alle ET++Klassen von Object ab. [WG95] sprechen daher von „mostly single rooted“. So ist es möglich, in dieser Klasse eine umfangreiche Infrastruktur bereitzustellen. Vor allem ist dies ein Mechanismus zum Aktivieren/Passivieren von Objekten, das heißt die Transformation des Objektes in einen Stream. Hiermit werden neben permanenter Speicherung auch tiefe Kopien (DeepCopy), sowie die Übertragung in ein Clipboard und von da aus in andere Anwendungen realisiert. Mittels „Dynamic loading and linking“ können sogar Objekte übertragen werden, deren Klassen noch gar nicht bekannt waren (vgl. [WG95]). Obwohl ET++ zur Laufzeit ausreichend Laufzeitinformationen in Form eines über den C++ Standard weit hinausgehenden, per Makro realisierten RTTI (Run Time Type Information) zur Verfügung stehen, um die Passivierung automatisch durchzuführen, müssen die Methoden „ReadFrom“ und „PrintOn“ doch „vor Hand“ implementiert werden. Der Entwickler einer Klasse soll entscheiden, welche Attribute gespeichert werden müssen und welche jederzeit durch einfache Berechnungen wieder hergestellt werden können. Bereits in Object wurde der Benachrichtigungsmechanismus (change notification) implementiert. Somit kann dieser nicht nur benutzt werden, um verschiedene Fenster (also Sichten) auf ein Dokument zu aktualisieren, sondern zwischen beliebigen Objekten. Ein von den Autoren genanntes Beispiel sind verbundene Grafikelemente in der Anwendung ET++Draw [WG94]. ET++ unterstützt durch Commands Undo und Redo über beliebig viele Ebenen. Dieses Mikro-Framework ist Bestandteil der Architektur und prägt die Struktur der Applikationen. Zu der Infrastruktur der Anwendungsentwicklung gehört die Behälterklassen-Bibliothek. Es handelt sich um Bausteinklassen (vgl. 2.1.1), wobei je Behälterklasse eine passende Iteratorklasse existiert. Die Besonderheit dieser Behälterbibliothek sind robuste Iteratoren, die auch bei Änderungen am Behälter gültig bleiben (dazu werden z.B. Elemente verzögert gelöscht, also erst dann, wenn kein Iterator mehr auf dieses Objekt verweist).