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).