2009-01-05 15 views
115

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

- name : string 

Mais comment fait-on cela avec une énumération?

Répondre

144

Ils sont simplement montré comme ceci:

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

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

+13

énumérations travaillent en fait plus comme types de données que les classes en UML, donc généralement les associations ne sont pas représentés plus que ce qu'ils seraient si vous déclarez un attribut être de type Entier. Si votre outil de modélisation prend explicitement en charge les énumérations, vous devez l'utiliser et utiliser uniquement la notation stéréotypée Class + <> comme solution de repli si nécessaire. –

+0

Pouvez-vous dire où je peux trouver le stéréotype <> pour ArgoUML? – Tim

+0

@Tim ArgoUML a un support de première classe pour Enumerations, donc pas besoin d'utiliser le stéréotype –

1

En général, vous modéliser l'ENUM lui-même comme une classe avec le stéréotype enum

56

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 forte. Visuellement, le résultat sera très similaire à une classe avec un stéréotype <<enumeration>>, mais dans le métamodèle UML, une énumération est en fait un type séparé (meta).

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

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

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

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

Voici une photo d'un exemple légèrement différent dans ArgoUML: enter image description here

+6

Merci pour la capture d'écran ArgoUML. –