Aufzählungen

Ein Aufzählungstyp besteht aus einer vordefinierten Liste von Instanzen, den sogenannten Classifiern. Diese werden direkt bei der Modelldefinition festgelegt und sind von dem Nutzer der Applikation nicht anpassbar oder erweiterbar. Aus Nutzerperspektive stellt sich ein Aufzählungstyp bei der Auswahl in einer Referenz wie ein normaler Klassentyp dar. Der Nutzer kann aus einer vordefinierten Menge auswählen. Bei dem Aufzählungstyp ist diese Auswahlmenge durch die im Modell definierten Classifier bestimmt, bei einem normalen Klassentyp über die Instanzen der Klasse.

Verwendung

Einen Aufzählungstyp sollte man nur dann verwenden, wenn absehbar ist, dass sich Funktionsausdrücke auf einzelne Classifier des Typs beziehen werden. Typischerweise geschieht dies in Fallunterscheidungen anhand von Status-Attributen: "Wenn der Projektstatus 'in Arbeit' ist, dann können die Planwerte nicht mehr bearbeitet werden".

In diesem Fall könnte es sinnvoll sein, einen Aufzählungstyp ProjectState mit den Classifiern wie oben gezeigt einzuführen. Der Vorteil einer solchen Aufzählung besteht darin, dass die einzelnen Classifier Namen im Modell haben, über die in Funktionsausdrücken direkt auf sie zugegriffen werden kann. Vgl. Modell-Literale.

Einschränkungen

Bei der Verwendung von Aufzählungstypen in einem Modell sollte man berücksichtigen, dass diese nicht so flexibel sind wie normale Klassen und deren Instanzen. So können an einem Aufzählungstyp keine weiteren Eigenschaften definiert werden. Die Instanzen eines Aufzählungstyps (die Classifier) haben genau einen technischen Namen und einen internationalisierten Anzeigenamen. Alle diese Eigenschaften von Classifiern sind nach ihrer Definition unveränderlich. Zwar kann die Liste der Classifier eines Aufzählungstyps zur Laufzeit der Anwendung noch angepasst werden. Allerdings ist die Definition eines neuen Classifiers ein administrativer Vorgang. Ein Aufzählungstyp darf daher dann nicht verwendet werden, wenn die Anlage oder Löschung von Classifiern eine Nutzeraufgabe darstellt.

Alternative

Anstatt eines Aufzählungstyps kann eine einfache Klasse mit einem internationalisierten Namensattribut genutzt werden. Eine solche Modellierung hat den Vorteil, dass diese mit weiteren Eigenschaften ergänzt werden kann. Für die Administration der Instanzen eines solchen Typs kann leicht eine eigene Sicht z.B. über eine Grid erstellt werden. Einziger Nachteil einer solchen Alternative ist, dass auf eine Instanz eines solchen Typs nicht direkt in einem Funktionsausdruck Bezug genommen werden kann. Diese Alternative sollte daher nur gewählt werden, wenn an den einzelnen Instanzen der Aufzählung keine Funktionslogik hängt.