Énumération du diagramme de classes UML

145

Je modélise un diagramme de classes. Un attribut d'une classe est une énumération. Comment modéliser cela? Normalement, vous faites quelque chose comme ceci:

- name : string

Mais comment faire cela avec une énumération?

Martijn
la source

Réponses:

198

Ils sont simplement montrés comme ceci:

_______________________
|   <<enumeration>>   |
|    DaysOfTheWeek    |
|_____________________|
| Sunday              |
| Monday              |
| Tuesday             |
| ...                 |
|_____________________|

Et puis ayez juste une association entre cela et votre classe.

James B
la source
16
Les énumérations fonctionnent plus comme des types de données que comme des classes dans UML, de sorte que les associations ne sont généralement pas affichées plus qu'elles ne le seraient si vous déclariez un attribut de type Integer. Si votre outil de modélisation prend en charge explicitement les énumérations, vous devez l'utiliser et n'utiliser que la notation de stéréotype Class + <<enumeration>> comme solution de secours si nécessaire.
Tom Morris
Pouvez-vous dire où puis-je trouver le stéréotype <<enumeration>> pour ArgoUML?
Timofey
@Tim ArgoUML a un support de première classe pour les énumérations, donc pas besoin d'utiliser le stéréotype
Tom Morris
<<enumeration>>n'est en fait pas un stéréotype mais un mot-clé. Malheureusement, les auteurs UML n'ont fait aucune différenciation visuelle.
qwerty_so
68

Si votre outil de modélisation UML prend en charge la spécification d'une énumération, vous devez l'utiliser. Ce sera probablement plus facile à faire et cela donnera à votre modèle une sémantique plus solide. Visuellement, le résultat sera très similaire à une classe avec un <<enumeration>>stéréotype, mais dans le métamodèle UML, une énumération est en fait un type (méta) distinct.

+---------------------+
|   <<enumeration>>   |
|    DayOfTheWeek     |
|_____________________|
| Sunday              |
| Monday              |
| Tuesday             |
| ...                 |
+---------------------+

Une fois qu'il est défini, vous pouvez l'utiliser comme type d'attribut comme vous le feriez pour un type de données ou le nom d'une de vos propres classes.

+---------------------+
|        Event        |
|_____________________|
| day : DayOfTheWeek  |
| ...                 |
+---------------------+

Si vous utilisez ArgoEclipse ou ArgoUML, il y a un menu déroulant sur la barre d'outils qui sélectionne parmi le type de données, l'énumération, le signal, etc. qui vous permettra de créer vos propres énumérations. Le compartiment qui contient normalement des attributs peut ensuite être rempli avec EnumerationLiterals pour les valeurs de votre énumération.

Voici une image d'un exemple légèrement différent dans ArgoUML: entrez la description de l'image ici

Tom Morris
la source
7
Merci pour la capture d'écran ArgoUML.
Petri Tuononen
1

En règle générale, vous modélisez l'énumération elle-même en tant que classe avec le enumstéréotype

Annakata
la source