Enum. De diagrama de clase UML

145

Estoy modelando un diagrama de clase. Un atributo de una clase es una enumeración. ¿Cómo modelo esto? Normalmente haces algo como esto:

- name : string

Pero, ¿cómo se hace esto con una enumeración?

Martijn
fuente

Respuestas:

198

Simplemente se muestran así:

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

Y luego solo tienen una asociación entre eso y su clase.

James B
fuente
16
En realidad, las enumeraciones se parecen más a los tipos de datos que a las clases en UML, por lo que, por lo general, las asociaciones no se muestran más de lo que serían si declaras que un atributo es de tipo Integer. Si su herramienta de modelado tiene soporte explícito para enumeraciones, debe usar eso y solo usar la notación de estereotipo Clase + <<enumeración>> como respaldo si es necesario.
Tom Morris
¿Podría decir dónde puedo encontrar el estereotipo <<enumeración>> para ArgoUML?
Timofey
@Tim ArgoUML tiene soporte de primera clase para Enumeraciones, por lo que no es necesario usar el estereotipo
Tom Morris
<<enumeration>>en realidad no es un estereotipo sino una palabra clave. Lamentablemente, los autores de UML no hicieron ninguna diferencia visual.
qwerty_so
68

Si su herramienta de modelado UML tiene soporte para especificar una enumeración, debe usarla. Es probable que sea más fácil de hacer y le dará a su modelo una semántica más sólida. Visualmente, el resultado será muy similar a una clase con un <<enumeration>>estereotipo, pero en el metamodelo UML, una enumeración es en realidad un tipo (meta) separado.

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

Una vez que se define, puede usarlo como el tipo de Atributo tal como lo haría con un Tipo de datos o el nombre de una de sus propias Clases.

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

Si está utilizando ArgoEclipse o ArgoUML, hay un menú desplegable en la barra de herramientas que selecciona entre Tipo de datos, Enumeración, Señal, etc. que le permitirá crear sus propias Enumeraciones. El compartimento que normalmente contiene Atributos se puede completar con EnumerationLiterals para los valores de su enumeración.

Aquí hay una imagen de un ejemplo ligeramente diferente en ArgoUML: ingrese la descripción de la imagen aquí

Tom Morris
fuente
77
Gracias por la captura de pantalla de ArgoUML.
Petri Tuononen
1

Por lo general, modela la enumeración en sí misma como una clase con el enumestereotipo

annakata
fuente