16.3. Datatyp

Datentypen kann man sich als einfache Klassen denken. Sie haben keine Attribute und jede Operation von Ihnen darf keine Seiteneffekte aufweisen. Eine nützliche Analogie sind primitive Datentypen in einer Sprache wie Java. Die Integerzahl „3“ steht für sich selbst - sie hat keine innere Struktur. Es gibt Operationen (z.B. Addition) auf Integerzahlen, aber wenn sie 3 + 4 ausführen, ist das Ergebnis eine neue Zahl, „3“ und „4“ bleiben in diesem Beispiel unverändert.

Innerhalb von UML 1.4 ist ein Datentyp eine Subklasse der Metaklasse Klassifizierer. Dieser umfasst die vordefinierten primitiven Typen (byte , char, double, float, int, long und short), die vordefinierte Aufzählung, boolean und die anwenderdefinierten enumeration Typen.

[Anmerkung]Anmerkung

Auch void ist als Datentyp innerhalb von ArgoUML definiert.

Innerhalb von ArgoUML können neue Datentypen mit Hilfe der Schaltfläche Neuer Datentyp im Register Eigenschaften des Modelles und Paketen (in diesem Fall ist der neue Datentyp auf den Scope des Paktes beschränkt), als auch im Register Eigenschaften für Datentypen erzeugt werden. Datentypen können auch mit dem Symbol in der Diagrammsymbolleiste eines Klassendiagrammes erzeugt werden.

Der UML 1.4-Standard erlaubt das Plazieren von benutzerdefinierten Datentypen in Klassendiagrammen, um deren Vererbungsstruktur zu definieren. Dies ist auch in ArgoUML möglich. Er wird im Diagramm durch einen Rahmen mit zwei Bereichen dargestellt, wobei der oberste mit «Datentyp» gekennzeichnet ist und den Namen enthält. Der untere enthält die Operationen.

16.3.1. Register Datentypdetails

Folgende Detail-Register sind für Datentypen aktiv:

Zu-Bearbeiten-Element

Standard-Register.

Eigenschaften

Siehe Abschnitt 16.3.2, „ Symbolleiste Datentypeigenschaften und Abschnitt 16.3.3, „ Eigenschaftsfelder für den Datentyp unten.

Dokumentation

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

Quellcode

Standard-Register. Nicht im Einsatz. Es würde eine Klassendeklaration für den neuen Datentyp erwarten, um die Code-Generierung zu ermöglichen.

Eigenschaftswerte

Standard-Register. Das UML-Metamodell hat die folgenden Eigenschaftswerte für Datentyp definiert.

  • persistence (von der Superklasse , Classifier). Werte transitory, geben an, dass der Zustand gelöscht wird, wenn eine Instanz gelöscht oder persistent wird, der markierte Zustand wird erhalten, wenn eine Instanz gelöscht wird.

    [Tipp]Tipp

    Da benutzerdefinierte Datentypen Aufzählungen sind, haben sie keinen zu erhaltenden Zustand und der Wert dieses Eigenschaftswertes ist irrelevant.

  • semantics (von der Superklasse , Classifier). Der Wert ist eine Spezifikation der Semantik des Datentyps.

  • derived (von der Superklasse , Modell-Element). Werte mit true bedeuten, dass die Klasse redundant ist - sie kann formal von anderen Elementen abgeleitet werden. false bedeutet, dass sie nicht abgeleitet werden kann.

    [Tipp]Tipp

    Obwohl formal verfügbar, hat ein abgeleiteter Datentyp keinen bestimmten Wert und daher sollten Datentypen immer mit derived=false bezeichnet werden.

16.3.2. Symbolleiste Datentypeigenschaften

Nach oben

Geht in der Paketstruktur nach oben.

Neuer Datentyp

Erzeugt innerhalb des gleichen Paketes einen neuen Datentyp (siehe Abschnitt 18.6, „ Klasse) als aktuellen Datentyp.

[Tipp]Tipp

Obwohl es Sinn machen kann, Datentypen auf diesem Weg zu erzeugen, kann es klarer sein, diese innerhalb eines Paketes oder Modelles, wo sie sie benötigen, zu erzeugen.

Neue Aufzählung

Erzeugt im gleichen Paket eine neue Aufzählung (siehe Abschnitt 16.4, „ Enumeration (Aufzählung)) als Datentyp und springt sofort in das Register Eigenschaften dieser Aufzählung.

Neue Operation

Erzeugt einen neue Operation innerhalb des Datentyps und springt sofort in das Register Eigenschaften dieser Operation.

Neuer Stereotyp

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

Löschen

Löscht den Datentyp aus dem Modell.

16.3.3. Eigenschaftsfelder für den Datentyp

Name

Textfeld. Der Name des Datentyps. Die primitiven Datentypen haben alle kleingeschriebene Namen. Es gibt allerdings keine formale Konvention hierfür.

[Anmerkung]Anmerkung

Der Standardname neu erzeugter Datentypen ist ein leerer String „“. Datentypen mit leeren String-Namen erscheinen im Explorer unter (Unbenannte Datentypen) .

Namensraum

DropDown-Kombinationsfeld. Erlaubt die Änderung des Namensraumes für den Datentyp. Dies ist die Pakethierarchie.

Modifizierer

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

  • Abstract deklariert, dass dieser Datentyp nicht instantiiert werden kann und daher immer spezialisiert werden muss.

    [Anmerkung]Anmerkung

    ArgoUML enthält keine Mechanismen, um Datentypen zu spezialisieren, so dass dieses Markierfeld wenig genutzt wird.

  • Leaf gibt an, dass der Datentyp eine weiteren Subtypen haben kann, während Root angibt, dass es sich um einen Datentyp auf oberster Ebene handelt.

    [Tipp]Tipp

    Sie können die Spezialisierung eines Datentyps in einem Klassendiagramm definieren, indem Sie Generalisierungen zwischen ihnen einzeichnen.

Sichtbarkeit

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

Gibt die Sichtbarkeit des Datentyps an.

Abhängig von

Textbereich. Listet jedes Element auf, das von diesem Datentyp abhängig ist.

[Achtung]Achtung

Es ist nicht klar, dass Abhängigkeiten zwischen Datentypen mehr Sinn machen.

Notwendig für

Textbereich. Listet jedes Element auf von dem dieser Datentyp abhängt.

[Achtung]Achtung

Es ist nicht klar, dass Abhängigkeiten zwischen Datentypen mehr Sinn machen.

Generalisierungen

Textbereich. Listet jeden Datentyp auf, der diesen Datentyp vererbt (generalisiert).

Spezialisierungen

Textbereich. Listet jeden spezialisierten Datentyp auf (z.B. für den dieser Datentyp eine Generalisierung ist).

Operationen

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

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

  • Nach unten. Nur verfügbar, wenn es zwei oder mehr Operationen gibt und sich die markierte Operation nicht ganz 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 in Klassen verwenden. Erinnern Sie sich, dass Operationen in Datentypen keine Seiteneffekte haben dürfen (sie sind read-only). Das heißt, der Modifizierer query muss bei allen Operationen ausgewählt sein.