Enum do diagrama de classes UML

145

Estou modelando um diagrama de classes. Um atributo de uma classe é uma enumeração. Como eu modelo isso? Normalmente você faz algo assim:

- name : string

Mas como alguém faz isso com um enum?

Martijn
fonte

Respostas:

198

Eles são simplesmente mostrados assim:

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

E então apenas tenha uma associação entre isso e sua classe.

James B
fonte
16
As enumerações realmente funcionam mais como Tipos de dados do que Classes na UML, portanto, normalmente, as Associações não são mostradas mais do que seriam se você declarasse um atributo como do tipo Inteiro. Se sua ferramenta de modelagem tiver suporte explícito para enumerações, você deve usá-la e usar apenas a notação de estereótipo Class + <<enumeration>> como um fallback, se necessário.
Tom Morris
Você poderia dizer onde posso encontrar o estereótipo de <<numeração>> para o ArgoUML?
Timofey 22/01
@ Tim ArgoUML tem suporte de primeira classe para as contagens, então não há necessidade de usar o estereótipo
Tom Morris
<<enumeration>>na verdade, não é um estereótipo, mas uma palavra-chave. Infelizmente, os autores da UML não fizeram nenhuma diferenciação visual.
Qwerty_so
68

Se sua ferramenta de modelagem UML tiver suporte para especificar uma enumeração, você deve usá-la. Provavelmente será mais fácil de fazer e dará ao seu modelo uma semântica mais forte. Visualmente, o resultado será muito semelhante a uma Classe com um <<enumeration>>Estereótipo, mas no metamodelo UML, uma Enumeração é realmente um tipo (meta) separado.

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

Uma vez definido, você pode usá-lo como o tipo de um Atributo, da mesma forma que faria com um Tipo de dados ou com o nome de uma de suas próprias Classes.

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

Se você estiver usando o ArgoEclipse ou o ArgoUML, há um menu suspenso na barra de ferramentas que seleciona entre Tipo de dados, Enumeração, Sinal, etc., que permitirá criar suas próprias Enumerações. O compartimento que normalmente contém atributos pode ser preenchido com EnumerationLiterals para os valores de sua enumeração.

Aqui está uma figura de um exemplo um pouco diferente no ArgoUML: insira a descrição da imagem aqui

Tom Morris
fonte
7
Obrigado pela captura de tela do ArgoUML.
Petri Tuononen
1

Normalmente, você modela o enum como uma classe com o enumestereótipo

annakata
fonte