16.4. Enumeration (Aufzählung)

Eine Enumeration ist ein primitiver Datentyp, der eine begrenzten Anzahl von Werten in einer kurzen Liste aufweist. Sie hat keine Attribute und jede Operation darf keine Seiteneffekte haben. Eine nützliche Analogie dazu ist der primitive Datentyp boolean in einer Sprache wie Java. Boolean steht für sich selbst - und hat keine innere Struktur. Es gibt Operationen (z.B. das logische xor) für die Booleans, aber wenn ich true xor true ausführe, ist das Ergebnis ein neuer Boolean und die beiden Original-Boolean bleiben unverändert.

Innerhalb von UML 1.4 ist Enumeration eine Subklasse der Metaklasse Datentyp.

Der große Unterschied zu anderen Datentypen ist, dass eine Enumeration Enumeration-Literale aufweist. Z.B. die Enumeration „boolean“ ist mit zwei Enumeration- Literalen „true“ und „false“ definiert.

Neue Enumerationen können in ArgoUML mit Hilfe der Schaltfläche Neue Enumeration im Register Eigenschaften des Modelles oder des Paketes (in diesem Fall ist die neue Enumeration auf den Scope des Paketes beschränkt), wie auch im Register Eigenschaften für Datentypen und Enumeration erzeugt werden. Enumerationen können auch mit dem Symbol in der Diagramm-Symbolleiste eines Klassendiagrammes erzeugt werden.

Der UML 1.4-Standard erlaubt es, benutzerdefinierte Enumerationen in Klassendiagrammen zu plazieren, um deren Vererbungsstruktur zu definieren. Dies ist auch in ArgoUML möglich. Sie wird im Diagramm durch einen Rahmen mit drei Bereichen dargestellt. Der oberste Bereich ist mit «enumeration» markiert und enthält den Namen. Der mittlere Bereich zeigt die Enumerations-Literale. Der untere enthält die Operationen.

16.4.1. Die Detail-Register Enumeration

Folgende Detail-Register sind für Enumerationen aktiv.

Zu-Bearbeiten-Element

Standard-Register.

Eigenschaften

Siehe Abschnitt 16.4.2, „ Eigenschaftssymbolleiste Enumeration und Abschnitt 16.4.3, „ Eigenschaftsfelder für Enumerationen unten.

Dokumentation

Standard-Register. Siehe Abschnitt 13.4, „ Das Register Dokumentation.

Darstellung

Standard-Register.

Quellcode

Standard-Register.

Stereotyp

Standard-Register. Das UML-Metamodell hat standardmäßig die folgenden Stereotypen für einen Klassifizierer definiert, der auch auf eine Enumeration angewendet wird:

  • metaclass (von der Superklasse, Classifier).

  • powertype (von der Superklasse, Classifier).

  • process (von der Superklasse, Classifier).

  • thread (von der Superklasse, Classifier).

  • utility (von der Superklasse, Classifier).

Eigenschaftswerte

Standard-Register. Im UML-Metamodell sind für die Enumeration keine Standard-Eigenschaftswerte definiert.

16.4.2. Eigenschaftssymbolleiste Enumeration

Nach oben

Geht in der zusammengesetzten Struktur nach oben.

Neuer Datentyp

Erzeugt im gleichen Paket einen neuen Datentyp (siehe Abschnitt 18.6, „ Klasse) als aktuelle Enumeration.

Neue Enumeration

Erzeugt innerhalb des gleichen Namensraumes eine neue Enumeration als aktuelle Enumeration und springt sofort in das Register Eigenschaften der neuen Enumeration.

Neues Enumerations-Literal

Erzeugt in der Enumeration ein neues Enumerations-Literal und springt sofort in das Register Eigenschaften dieses Literals.

Neue Operation

Erzeugt in der Enumeration eine neue Operation und springt sofort in das Register Eigenschaften dieser Operation.

Neuer Stereotyp

Erzeugt innerhalb des gleichen Paketes einen neuen Stereotypen (siehe Abschnitt 16.6, „ Stereotyp) und springt sofort in das Register Eigenschaften dieses Stereotypen.

Aus Modell entfernen

Entfernt den Datentyp aus dem Modell.

16.4.3. Eigenschaftsfelder für Enumerationen

Name

Textfeld. Der Name der Enumeration. Die primitiven Enumerationen haben alle Namen in Kleinbuchstaben. Hierfür gibt es allerdings keine formale Konvention.

[Anmerkung]Anmerkung

Der Standardname für einen neu erzeugten Datentyp ist ein leerer String „“. Enumerationen mit einem leeren String als Namen, wird mit dem Namen (Unbenannte Enumeration) im Explorer erscheinen.

Namensraum

Ein Kombinationsfeld. Erlaubt das Ändern des Namensraumes der Enumeration. Dies ist die zusammengesetzte Hierarchie.

Modifizierer

Markierfeld mit den Einträgen Abstract, Leaf und Root.

  • Abstract wird verwendet, um zu deklarieren, dass diese Enumeration nicht instantiiert werden kann, aber immer spezialisiert werden muss.

  • Leaf zeigt an, dass diese Enumeration keine weiteren Subtypen haben kann, während Root angibt, dass es sich um eine Enumeration auf oberster Ebene handelt.

Sichtbarkeit

Auswahlfeld mit den Einträgen public, private, protected und package.

Gibt die Sichtbarkeit der Enumeration wieder.

Abhängig von

Textbereich. Listet jedes Element auf, dass von dieser Enumeration abhängig ist. Taste 1-Doppelklick geht zum markierten Modellelement. Taste 2-Klick öffnet ein Popup-Menü mit den folgenden Einträgen.

  • Hinzufügen.... Öffnet ein Dialogfenster, das es erlaubt, Abhängigkeiten von anderen Modellelementen zu erzeugen.

Notwendig für

Textbereich. Listet jedes Element auf, von dem diese Enumeration abhängt. Ein Taste 1-Doppelklick geht zum markierten Modellelement. Ein Taste 2-Klick öffnet ein Popup-Menü mit den folgenden Einträgen..

  • Hinzufügen.... Öffnet ein Dialogfenster, das es erlaubt, Abhängigkeiten auf andere Modellelemente zu erzeugen.

Generalisierungen

Textbereich. Listet jede Enumeration auf, die diese Enumeration generalisiert.

Spezialisierungen

Textbereich. Listet jede spezialisierte Enumeration auf (z.B. für wen diese Enumeration eine Generalisierung ist).

Operationen

Textbereich. Listet alle Operationen auf, die für diese Enumeration definiert sind. Ein Taste 1-Doppelklick geht zu der markierten Operation. Ein Taste 2-Klick öffnet ein Popup-Menü mit zwei Einträgen.

  • Nach oben. Nur verfügbar, wenn zwei oder mehr Operationen gelistet sind und die markierte Operation sich nicht oben befindet. Sie wird um einen Schritt nach oben bewegt.

  • Nach unten. Nur verfügbar, wenn zwei oder mehr Operationen gelistet sind und die markierte Operation sich nicht unten befindet. Sie wird um einen Schritt nach unten bewegt.

Details über Operationen, siehe Abschnitt 18.8, „ Operation.

[Achtung]Achtung

ArgoUML behandelt alle Operationen gleich. Jede, hier erzeugte Operation wird den gleichen Mechanismus wie Operationen für Klassen verwenden. Erinnern Sie sich, dass Operationen für Enumerationen keine Seiteneffekte haben dürfen (sie sind read-only). Das heißt, der Modifizierer query muss für alle Operationen markiert sein.

Literale

Textbereich. Listet alle Enumerations-Literale auf, die für diese Enumeration definiert sind. Ein Taste 1- Doppelklick geht zu dem markierten Literal, ein Taste 2- Klick öffnet ein Popup-Menü mit zwei Einträgen.

  • Nach oben. Nur verfügbar, wenn es zwei oder mehr Literale gibt und sich das markierte Literal nicht ganz oben befindet. Es wird um einen Schritt nach oben bewegt.

  • Nach unten. Nur verfügbar, wenn zwei oder mehr Literale aufgelistet sind und das markierte Literal sich nich ganz unten befindet. Es wird um einen Schritt nach unten bewegt.