2016-05-11 4 views
9

Je voudrais créer un diagramme UML avec des énumérations Java (enum), qui ont un ou plusieurs attributs, mais je suis confus sur la façon de le faire.Énumération de modélisation UML avec attributs

Par exemple, un ENUM pourrait être déclarée comme ceci:

public enum Enumeration_type { 

    LITERAL_A("attr1_value", attr2_value, attr3_value), 
    LITERAL_B("attr1_value", attr2_value, attr3_value); 

    final String attr1; 
    final type_1 attr2 = initial_value_1; 
    final type_2 attr3; 

    Enumeration_type(String attr1, type_1 attr2, type_2 attr3) { 
     this.attr1_value = attr1; 
     this.attr2_value = attr2; 
     this.attr3_value = attr3; 
    } 
} 

Sans les attributs, il est facile:

+--------------------+ 
| <<enumeration> | 
| Enumeration_type | 
+--------------------+ 
| LITERAL_A   | 
| LITERAL_B   | 
+--------------------+ 

Mais comment modéliser vous avec élégance les attributs? Est-ce que ça devrait être comme ça?

+-----------------------------------------------------+ 
| <<enumeration>>         | 
| Enumeration_type         | 
+-----------------------------------------------------+ 
| attr1: String          | 
| attr2: type_1 = initial_value_1     | 
| attr2: type_2          | 
+-----------------------------------------------------+ 
| LITERAL_A("attr1_value", attr2_value, attr3_value) | 
| LITERAL_B("attr1_value", attr2_value, attr3_value) | 
+-----------------------------------------------------+ 

Je trouve que cet exemple here, mais qui utilise les attributs de classe String en tant que noms de ENUM. Je pense que cela devrait être différent de l'utilisation de public enum sans spécifier les types de données des noms enum.

+-----------------------------------------+ 
| <<enumeration>>      | 
|  CarType       | 
+-----------------------------------------+ 
| +sedan : String = SEDAN    | 
| +liftback : String = LIFTBACK   | 
| +stationWagon : String = STATION_WAGON | 
+-----------------------------------------+ 

Merci beaucoup pour vos réponses.

Répondre

4

Je ne pense pas que vous puissiez modéliser les valeurs d'attribut pour chacun des littéraux d'énumération dans UML.
EA utilise la notation suivante pour une énumération qui a des attributs:

enter image description here

Vous pouvez documents quelque part les valeurs des attributs dans les notes de chaque littéral, ou vous pouvez utiliser un fichier Excel ou quelque chose de similaire pour gérer ces données.
Souvent, vous n'êtes tenu de fournir que les valeurs initiales au moment du design car elles peuvent changer au moment de l'exécution. Il n'est donc pas utile de conserver ces valeurs dans votre modèle si vous ne pouvez pas leur faire confiance.

+0

Je pense que si les valeurs finales (constantes) sont nécessaires pour la construction du - par la définition constante - énumération, ils le feraient ont été montrés dans le diagramme de classe en quelque sorte. Mais je fais confiance à votre jugement à ce sujet. Je vous remercie. – BBerry

-1

Vous pouvez utiliser la documentation officielle http://www.omg.org/spec/UML/2.5 pour décrire vos classes de manière formelle. vous trouverez dans la section 11.4.4 quelques exemples comme celui-ci:

Example 1

+0

Je ne vois pas que ce soit une énumération avec des attributs finaux, qui sont utilisés automatiquement dans le constructeur de l'enum pour créer la constante. Ma question était assez précise. – BBerry