FMAD besteht konzeptuell aus mehreren Teilkomponenten, deren Beziehungen zueinander in Abbildung 7.7 verdeutlicht werden:
Abbildung 7.7: Konzeptueller Aufbau des
Autorenwerkzeugs FMAD
In FMAD selbst sind keine Medienobjekterzeugungswerkzeuge integriert.
Die Medienobjekte müssen mit Hilfe von externen medientypspezifischen
Werkzeugen
erstellt und in Dateien abgelegt werden. Aus diesen
Dateien können die Daten in FMAD geladen werden.
Sogenannte Medienmengeneditoren ermöglichen die
Erstellung von Medienobjektsammlungen.
In den Editoren werden die Medienobjekte durch Ikonen
repräsentiert.
Medienmengeneditoren beinhalten bestimmte Filter- und
Browsing-Werkzeuge zur Bearbeitung von Objektmengen.
Zur Definition von Beziehungen zwischen den Medienobjekten
kann ein Autor die Ikonen mit modernen Interaktionsformen, wie
Drag-and-Drop-Mechanismen und anderen Prinzipien der Direkten Manipulation,
in die Strukturierungseditoren verschieben. In diesen können dann
mit Konzepten der visuellen Programmierung
Beziehungen zwischen den
Medienobjekten definiert werden.
Über die Strukturierungseditoren ist damit die Bildung
komplexer Medienobjekte möglich.
Zur Festlegung der initialen Werte der
(Gestaltungs-)Attribute der Objekte stehen
medientypspezifische, graphisch-interaktive Layout-Werkzeuge zur Verfügung.
Diese werden im folgenden Attributeditoren genannt.
Die Medienobjekte
und ihre Attribute sowie die Beziehungsgraphen,
d.h. die komplexen Objekte, werden in FMAD in einer abstrakten
Zwischenrepräsentation verwaltet. Diese kann zum einen extern gespeichert
werden. Dadurch werden persistente wiederverwendbare Medienobjekte
erzeugt.
Zum anderen kann die
Zwischenrepräsentation in interpretierbare Objekthierarchien des
XFantasy-UITs transformiert werden, womit ein Wechsel zwischen Entwicklungs-
und Ausführmodus unterstützt wird. Desweiteren ist
aus der Zwischenrepräsentation C++-Code generierbar,
der anschließend um Funktionalitäten ergänzt werden kann, die
nicht direkt mit FMAD spezifizierbar sind. Auf diese Weise lassen sich
Stand-Alone-Applikationen erzeugen.
Während Abbildung 7.7 eher eine globale konzeptuelle Sicht auf den Aufbau von FMAD widerspiegelt, die durch die Arbeitsweise über Editoren gekennzeichnet ist, gibt Abbildung 7.8 den strukturellen, implementiertechnischen Aufbau von FMAD wider, der von den Medienobjekten geprägt ist.
Abbildung 7.8: Struktureller Aufbau des Autorenwerkzeugs FMAD
Das besondere Merkmal der Implementierung von FMAD ist nämlich,
daß es nicht aus einer Sammlung von Editoren besteht, mit denen
verschiedene Medienobjekte bearbeitet werden können. Vielmehr
bilden die Medienobjekte den zentralen Bestandteil der Implementierung
von FMAD. Jedes Medienobjekt besitzt eigene typspezifische
funktionale Komponenten
, mit denen es sich
quasi selbst verwaltet bzw. über die es sich
manipulieren läßt.
Implementiertechnisch bildet dabei eine Menge von abstrakten
Basisklassen sowie ein Codegenerator und ein Interpreter, die auf die
abstrakten Schnittstellen zugreifen, den Kern von FMAD.
Medientypen und ihre Komponenten werden als von den Basisklassen abgeleitete
Klassen realisiert. Generelle Eigenschaften werden dabei geerbt.
Ausschließlich typspezifische Eigenschaften müssen noch implementiert
werden.
Das Zusammenspiel der Objekte und ihrer Komponenten ist bereits
im Kern von FMAD auf der Basis der abstrakten Klassen implementiert.
Diese (medien-)objektbasierte Implementierung von FMAD
hat positive Auswirkungen auf die Erweiterbarkeit von
FMAD um neue Medientypen, wie sich im Laufe des Kapitels, insbesondere in
Abschnitt 7.10, noch herausstellen wird.
Bei den Medienobjekten können komplexe von elementaren Medienobjekten unterschieden werden. Die Medienobjekte bilden die Knoten eines multimedialen Beziehungsnetzwerks, das im Prinzip nur implizit durch die Spezifikationskomponenten der komplexen Medienobjekte gebildet wird. Der Interpreter und Codegenerator nutzen das Beziehungsnetzwerk zur direkten Ausführung bzw. zur Erzeugung von C++-Programmcode.
Die Medienobjekte von FMAD sind getypt. Es sind Instanzen der Medientypklassen, die die Blätter der sogenannten Medientypklassenhierarchie bilden, die in Abbildung 7.9 dargestellt wird. Da FMAD um neue Medientypen erweiterbar ist, spiegelt Abbildung 7.9 nur den gegenwärtigen Implementierungsstand wider.
Abbildung 7.9: Medientypklassenhierarchie von FMAD
Basisklasse aller Medientypklassen ist die abstrakte Klasse FMMediaObject. Direkt von FMMediaObject abgeleitet sind die abstrakten Klassen FMElementarMediaObject und FMCompositeMediaObject. FMElementarMediaObject bildet die Basisklasse aller elementarer Medientypen. Die Klasse FMCompositeMediaObject unterstützt die Bildung von Mengen von Medienobjekten, zwischen denen allerdings noch keine Beziehungen definiert werden können. Letzteres ist erst bei Instanzen der Klasse FMComplexMediaObject möglich, die damit die Basisklasse der komplexen Medientypen bildet. Die Klassen FMFMadObject, FMMediaSetObject und FMIMMPAObject werden als Systemklassen bzw. -typen bezeichnet.
Wie bereits erwähnt, liegt der Architektur von FMAD eine (medien-)objektorientierte Sichtweise zugrunde. Wie in Abbildung 7.8 ersichtlich ist, setzen sich Medienobjekte aus verschiedenen Komponenten zusammen, die zum einen ihr Verhalten und zum anderen sowohl die Autoren- als auch -- im Falle der elementaren Medienobjekte -- die Benutzerschnittstelle implementieren. Zentrale Komponente jedes Objektes ist ihre Spezifikationskomponente. Bei den elementaren Medienobjekten verwaltet sie die initialen Werte der Attribute des Objektes, bei den komplexen Medienobjekten zusätzlich die Beziehungen. Werkzeuge zur Definition von Beziehungen oder initialen Attributwerten werden durch die Editorkomponente zur Verfügung gestellt. Routinen zum Speichern und Laden von Medienobjekten sind in der Persistenzkomponente zusammengefaßt. Über die Transformationskomponente läßt sich objektspezifischer Code erzeugen. Die Interpretationskomponente arbeitet im Falle der komplexen Medienobjekte mit der Steuerungskomponente, im Falle der elementaren Medienobjekte mit der Präsentationskomponente zusammen. Sie enthält die Attribute des Objektes und ermöglicht die Manipulation von Attributwerten und die Ausführung ihrer Systemfunktionen. Die Steuerungskomponente bzw. die Präsentationskomponente realisieren die Aktivitätsfunktion der komplexen bzw. elementaren Medienobjekte.