Enum del diagramma di classe UML


145

Sto modellando un diagramma di classe. Un attributo di una classe è un'enumerazione. Come posso modellarlo? Normalmente fai qualcosa del genere:

- name : string

Ma come si fa a farlo con un enum?

Risposte:


198

Vengono semplicemente mostrati in questo modo:

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

E poi basta avere un'associazione tra quella e la tua classe.


16
Le enumerazioni in realtà funzionano più come i tipi di dati che le classi in UML, quindi in genere le associazioni non vengono visualizzate più di quanto sarebbero se si dichiarasse che un attributo è di tipo intero. Se lo strumento di modellazione supporta esplicitamente le enumerazioni, è necessario utilizzarlo e utilizzare la notazione stereotipata Class + <<enumerazione>> come fallback, se necessario.
Tom Morris,

Potresti dire dove posso trovare lo <<enumerazione>> stereotipo per ArgoUML?
Timofey,

@Tim ArgoUML ha un supporto di prima classe per le enumerazioni, quindi non è necessario utilizzare lo stereotipo
Tom Morris,

<<enumeration>>in realtà non è uno stereotipo ma una parola chiave. Sfortunatamente gli autori di UML non hanno fatto alcuna differenziazione visiva.
qwerty_so

68

Se il tuo strumento di modellazione UML ha il supporto per specificare un'enumerazione, dovresti usarlo. Sarà probabilmente più facile da fare e darà al tuo modello una semantica più forte. Visivamente il risultato sarà molto simile a una Classe con uno <<enumeration>>stereotipo, ma nel metamodello UML, un'enumerazione è in realtà un tipo (meta) separato.

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

Una volta definito, puoi usarlo come tipo di attributo proprio come faresti con un tipo di dati o il nome di una delle tue classi.

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

Se stai usando ArgoEclipse o ArgoUML, c'è un menu a discesa sulla barra degli strumenti che seleziona tra Tipo dati, Enumerazione, Segnale, ecc. Che ti permetterà di creare le tue proprie enumerazioni. Il compartimento che normalmente contiene Attributi può quindi essere popolato con EnumerationLiterals per i valori dell'enumerazione.

Ecco una foto di un esempio leggermente diverso in ArgoUML: inserisci qui la descrizione dell'immagine


7
Grazie per lo screenshot di ArgoUML.
Petri Tuononen,

1

In genere modellare l'enum stesso come una classe con lo enumstereotipo

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.