UML类图枚举

185

我正在建模一个类图。一个类的属性是一个枚举。我该如何进行建模?通常你需要做以下操作:

- name : string

但是如何使用枚举类型实现这个功能呢?

3个回答

268

它们只是像这样显示:

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

然后只需在您的类和它之间建立关联即可。


17
在UML中,枚举类型实际上更像是数据类型而不是类,所以通常情况下,关联关系不会比将属性声明为整数类型时显示得更多。如果您的建模工具明确支持枚举类型,应该使用它,并只在必要时使用带有<<enumeration>>附加说明的类符号作为备选方案。 - Tom Morris
请问在哪里可以找到 ArgoUML 的枚举(enumeration)建模元素? - Timofey
@Tim ArgoUML对枚举类型有一流的支持,因此无需使用构造型。 - Tom Morris
"<<枚举>>"实际上不是一种模式,而是一个关键字。不幸的是,UML的作者没有进行任何视觉区分。 - qwerty_so

92

如果你的 UML 建模工具支持指定枚举类型,应该使用它。这样做可能更容易,并且它还会使你的模型具有更强的语义。在视觉上,结果与带有 <<enumeration>> 构造型的类非常相似,但在 UML 元模型中,枚举实际上是一个单独的(元)类型。

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

一旦定义了它,你就可以像使用数据类型或自己的类名一样,将它用作属性的类型。

+---------------------+
|        Event        |
|_____________________|
| day : DayOfTheWeek  |
| ...                 |
+---------------------+
如果您使用的是 ArgoEclipse 或 ArgoUML,工具栏上有一个下拉菜单,可以选择 Datatype、Enumeration、Signal 等选项,从而允许您创建自己的枚举。通常包含属性的区域随后可以用于填充枚举值的 EnumerationLiterals。以下是 ArgoUML 中稍微不同示例的图片: enter image description here

10
感谢提供 ArgoUML 的截图。 - Petri Tuononen

2
通常你将枚举本身建模为带有enum类型标识符的类。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接