next up previous contents
Next: Bewertung und Ausblick Up: Das Autorenwerkzeug FMAD Previous: Codegenerator

 

Medientypintegration

Ein wichtiger Aspekt bei der Implementierung von FMAD war seine einfache Erweiterbarkeit um neue Medientypen. Mit Hilfe der objektorientierten Programmierung ist dieses Ziel durch die Definition geeigneter abstrakter Basisklassen sowie durch die Bereitstellung einer Menge vordefinierter Klassen, die zur Bildung neuer Klassen mittels des Konzeptes der Komposition genutzt werden können, erreichbar. Das Konzept der abstrakten Basisklassen wurde insbesondere bei der Bildung der Medientypklassenhierarchie (siehe Abbildung 7.9) angewendet. Zur Integration eines neuen Medientyps müssen die geeignete Basisklasse ausgewählt und bestimmte virtuelle Methoden konkretisiert bzw. redefiniert werden, die im Prinzip die Schnittstellen zu den Komponenten der Medienobjekte bilden. Die Komponenten selbst lassen sich im allgemeinen durch eine Komposition mit Hilfe bereits vordefinierter Klassen implementieren. Im Detail sieht die Integration eines neuen elementaren Medientyps etwa folgendermaßen aus:

  1. Auswahl einer geeigneten Basisklasse aus der Medientypklassenhierarchie
  2. Festlegung der Attribute des Typs
  3. Implementierung der Spezifikationskomponente
    Als Basisklasse der Spezifikationskomponente dient die Klasse FMMediaSpec. Von ihr muß eine Klasse abgeleitet werden. Die neue Klasse wird dabei im allgemeinen durch Komposition von Instanzen der sogenannten FMSpec-Klassen gebildet, die einen Wert der jeweiligen Attributtypen speichern und verwalten können. Für die Basistypen (int, float, bool, char, string, ...) sind entsprechende FMSpec-Klassen bereits definiert.
  4. Implementierung der Persistenzkomponente
    Die Persistenzkomponente arbeitet eng mit der Spezifikationskomponente zusammen. Methoden zum Lesen und Schreiben der Attributwerte aus bzw. in Dateien sind bereits in den FMSpec-Klassen der Spezifikationskomponente implementiert. Von daher ergibt sich ein Großteil der Implementierung der Persistenzkomponente bereits automatisch durch die Implementierung der Spezifikationskomponente. Das Speichern und Laden der zu präsentierenden Information sowie der Informationsattribute ist allerdings abhängig von den unterstützten Medienobjekterzeugungswerkzeugen und muß ,,per Hand`` implementiert werden.
  5. Implementierung des Attributeditors
    Basisklasse der Attributeditoren bildet die Klasse FMElementarEditor, eine von der XFantasy-Klasse FDialogBox abgeleitete Klasse. Ein neuer Attributeditor wird im allgemeinen durch die Komposition von sogenannten ControlPanel-Blöcken (Objekte von Klassen, die von der Klasse FMCPBlock abgeleitet sind) definiert. Dies sind Objekte, die einem Autor die Festlegung der initialen Werte der Attribute mit Hilfe von Menüs, editierbare Textfeldern und anderen UI-Komponenten ermöglichen. Es existiert bereits eine Menge von vordefinierten Klassen, durch die auch die Kopplung zur Spezifikationskomponente realisiert wird.
  6. Implementierung der Präsentationskomponente
    In diesen Aufgabenbereich fällt die Implementierung der Systemfunktionen, insbesondere der Aktivitätsfunktion. Diese sind medientypabhängig und müssen mit Hilfe geeigneter XFantasy-Klassen realisiert werden. Bei der Integration von Interaktionstypen können insbesondere die Klassen der Eventbehandlung zur Erkennung und Verarbeitung komplexer Eingaben verwendet werden.
  7. Implementierung der Interpretationskomponente
    Die Klasse FMAttr bildet die Basisklasse aller Attribute. Für die Basistypen (int, float, bool, char, string, ...) sind von FMAttr bereits Klassen abgeleitet worden, so daß zur Implementierung der Interpretationskomponente häufig nur die Instanziierung der jeweiligen Klassen je nach Typ der Attribute notwendig ist. Die Kopplung der Attribute mit den entsprechenden Teilen der Spezifikationskomponente und der Präsentationskomponente erfolgt über Parameter des Konstruktors und ist intern bereits implementiert. Bei der Integration eines Interaktionstyps ist von der XFantasy-Klasse FAction eine Klasse abzuleiten, deren virtuelle Methode FAct aufgrund einer Benutzereingabe innerhalb der Aktivitätsfunktion aufgerufen wird. In der Methode FAct muß eine entsprechende Aktion generiert und in die Attributaktionsliste des Interpreters einfügt werden.
  8. Realisierung des Demonstrationsmodus
    Zur Realisierung des Demonstrationsmodus bei den visuellen Interaktionstypen ist ebenfalls eine von der XFantasy-Klasse FAction abgeleitete Klasse zu implementieren, in deren FAct-Methode die Bedingung der zu generierenden Beziehung angegeben und der Demonstrationsmodus gestartet werden muß. Für einen Medientypintegrator unterscheiden sich Ausführ- und Demonstrationsmodus nur durch die beiden unterschiedlichen FAction-Klassen. Der eigentliche Demonstrationsmodus ist bereits in der Klasse FMInteractionObject implementiert und wird vererbt.

Die in Abschnitt 7.6 beschriebenen Medientypen sind alle auf die eben vorgestellte Art und Weise in FMAD integriert worden. Allerdings ist die Menge der von ihnen unterstützten Attribute relativ klein und wird demnächst noch erweitert.

Wie in Kapitel 6.3.1.2 beschrieben, können komplexe Medientypen zum einen durch die Einschränkung bzw. Vorgabe bestimmter Beziehungen und zum anderen durch die Definition neuer Attribute spezialisiert werden. Spezielle komplexe Medientypen, wie beispielsweise Navigationsprogramme, sind noch nicht in FMAD integriert. Allerdings steht das prinzipielle Vorgehen hierfür fest. Zur Realisierung einer Spezialisierung durch die Einschränkung bzw. Vorgabe von Beziehungen müssen lediglich zwei Methoden, auf die der Strukturierungseditor zugreift, entsprechend redefiniert werden. Das Vorgehen bei der Integration neuer Attribute sieht ähnlich aus wie es oben für elementare Medienobjekte beschrieben worden ist. Da Attribute komplexer Medienobjekte häufig nur als Flag-Attribute oder zum Zwischenspeichern bestimmter Werte benötigt werden, ihnen also keine Systemfunktion zugeordnet ist (siehe auch Kapitel 6.3.1.2), sind für komplexe Medienobjekte bereits einige Attribute vordefiniert worden, so daß eine Spezialisierung durch die Integration neuer Attribute selten nötig sein wird. Bei einer Spezialisierung mittels der Einschränkung bzw. Vorgabe bestimmter Beziehungen werden die vordefinierten Attribute natürlich auch vererbt.


next up previous contents
Next: Bewertung und Ausblick Up: Das Autorenwerkzeug FMAD Previous: Codegenerator

Dietrich Boles
Thu Nov 14 14:58:01 MET 1996