Chapter 6. Type Mapping

Die Type-Mapping-Komponente dient dazu, im Modell verwendete Typen auf Typen in einer Programmiersprache abzubilden. Die Abbildung Figure 6-1 zeigt eine Übersicht der möglichen Typen:

Figure 6-1. Das GeneSEZ Typ-System

MClassifier bezeichnet selbst erstellte Typen im Modell. MGeneric stellt einen generischen Typ dar und wird verwendet, um eine Klasse mit einem oder mehreren Typen zu parametrisieren. MPrimitiveType stellt die primitiven Typen der jeweiligen Programmiersprache dar. Dabei handelt es sich meist um Hardware-nahe Typen, die in der Regel ohne include- oder import-Anweisung verwendbar sind. MExternal stellt die Typen einer Programmiersprache dar, die durch Standardbibliotheken oder andere verwendete externe Bibliotheken verfügbar gemacht werden.

6.1. Konzept des Type-Mapping

Das Type-Mapping realisiert zwei verschiedene Aufgaben. Zum einen werden mit einem Namens-Mapping die Namen der Typen im Modell auf die zu verwendenden Namen in der jeweiligen Zielsprache abgebildet. Bei MClassifier und MGeneric wird beim Aufruf der Funktion mapName() kein Namens-Mapping durchgeführt, da es sich ja um selbst modellierte Typen handelt, deren Namen nicht abgebildet werden müssen. Hier wird der name bzw. die specification zurück gegeben.

Die zweite Aufgabe ist ein Typ-Mapping, welches die Typ-Modifikatoren auswertet und gegebenenfalls den im Modell verwendeten Typ ersetzt. Typ-Modifikatoren werden im Modell nicht am Typ selbst festgelegt, sondern bei dem Modellelement, welches den Typ aufweist (also z.B. bei einem Attribut). Die Funktion mapType() realisiert das Typ-Mapping. Folgende Typ-Modifikatoren werden ausgewertet:

multiplicity

Anzahl der zu speichernden Objekte eines Typs (d.h. ob der Typ an sich ausreicht oder eine Collection oder ein Array des Typs verwendet werden muss)

unique

gibt an, ob ein Objekt mehrmals vorkommen kann, wenn die multiplicity größer als 1 ist

ordered

gibt an, ob die Objekte geordnet abgelegt werden

Die Typ-Modifikatoren unique und ordered beziehen sich auf multi-value Typen, d.h. Typen, deren multiplicity größer als 1 ist.

Die Abbildungsvorschriften für das Namens- und Typ-Mapping werden in einer XML-Datei festgelegt.

Weiterhin sind für die Auswahl des passenden Typs oft die im Quellcode angestrebte Verwendung bzw. die vorliegenden Rahmenbedingungen wesentlich. Hierzu können Kontexte definiert werden, die ein spezielles Mapping für eine bestimmte Situation/Verwendung darstellen.