16.3. Datentyp

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 Datentyp-Details

Die Register Details, die f??r Datentypen aktiv sind, sind folgende:

Zu-Bearbeiten-Element

Standard-Register.

Eigenschaften

Siehe Abschnitt 16.3.2, „Datatype Property Toolbar“ und Abschnitt 16.3.3, „Property Fields For Datatype“ unten.

Dokumentation

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

Quelldatei

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

    While formally available, a derived datatype does not have an obvious value, and so datatypes should always be marked with derived=false.

16.3.2. Datatype Property Toolbar

Go up

Navigate up through the package structure.

New datatype

This creates a new datatype (see Abschnitt 18.6, „Class“) within the same package as the current datatype.

[Tipp]Tipp

While it can make sense to create datatypes this way, it can be clearer to create them within the package or model where you want them.

New Enumeration

This creates a new Enumeration (see Abschnitt 16.4, „Enumeration“) in the same package as the datatype, navigating immediately to the properties tab for that Enumeration.

New Operation

This creates a new operation within the datatype, navigating immediately to the properties tab for that operation.

New Stereotype

This creates a new Stereotype (see Abschnitt 16.6, „Stereotype“) within the same package as the datatype, navigating immediately to the properties tab for that stereotype.

Delete

This deletes the datatype from the model.

16.3.3. Property Fields For Datatype

Name

Text box. The name of the datatype. The primitive datatypes all have lower case names, but there is no formal convention.

[Anmerkung]Anmerkung

The default name supplied for a newly created datatype is the empty string „“. Datatypes with empty string names will appear with the name (Unnamed Datatype) in the explorer.

Namespace

Drop down selector with navigate button. Allows changing the namespace for the datatype. This is the package hierarchy.

Modifiers

Check box, with entries Abstract, Leaf and Root.

  • Abstract is used to declare that this datatype cannot be instantiated, but must always be specialized.

    [Anmerkung]Anmerkung

    ArgoUML provides no mechanism for specializing datatypes, so this check box is of little use.

  • Leaf indicates that this datatype can have no further sub-types, while Root indicates it is a top level datatype.

    [Tipp]Tipp

    You can define the specialization of datatypes in a class diagram by drawing generalizations between them.

Visibility

Radio box, with entries public, private, protected, and package.

Records the visibility for the Datatype.

Client Dependencies

Text area. Lists any elements that depend on this datatype.

[Achtung]Achtung

It is not clear that dependencies between datatypes makes much sense.

Supplier Dependencies

Text area. Lists any elements that this datatype depends on.

[Achtung]Achtung

It is not clear that dependencies between datatypes makes much sense.

Generalizations

Text area. Lists any datatype that generalizes this datatype.

Specializations

Text box. Lists any specialized datatype (i.e. for which this datatype is a generalization.

Operations

Text area. Lists all the operations defined on this datatype. Button 1 double click navigates to the selected operation. button 2 click brings up a pop up menu with two entries.

  • Move Up. Only available where there are two or more operations, and the operation selected is not at the top. It is moved up one.

  • Move Down. Only available where there are two or more operations listed, and the operation selected is not at the bottom. It is moved down one.

See Abschnitt 18.8, „Operation“ for details of operations.

[Achtung]Achtung

ArgoUML treats all operations as equivalent. Any operations created here will use the same mechanism as operations for classes. Remember that operations on datatypes must have no side effects (they are read-only). This means the query modifier must be checked for all operations.