2016-05-11 95 views
9

我想用Java枚举(枚举)创建具有一个或多个属性的UML图,但我对如何执行该操作感到困惑。具有属性的UML建模枚举

例如枚举可以声明如下:

public enum Enumeration_type { 

    LITERAL_A("attr1_value", attr2_value, attr3_value), 
    LITERAL_B("attr1_value", attr2_value, attr3_value); 

    final String attr1; 
    final type_1 attr2 = initial_value_1; 
    final type_2 attr3; 

    Enumeration_type(String attr1, type_1 attr2, type_2 attr3) { 
     this.attr1_value = attr1; 
     this.attr2_value = attr2; 
     this.attr3_value = attr3; 
    } 
} 

没有属性,很容易:

+--------------------+ 
| <<enumeration> | 
| Enumeration_type | 
+--------------------+ 
| LITERAL_A   | 
| LITERAL_B   | 
+--------------------+ 

但你如何与它优雅的属性模型?它应该是这样吗?

+-----------------------------------------------------+ 
| <<enumeration>>         | 
| Enumeration_type         | 
+-----------------------------------------------------+ 
| attr1: String          | 
| attr2: type_1 = initial_value_1     | 
| attr2: type_2          | 
+-----------------------------------------------------+ 
| LITERAL_A("attr1_value", attr2_value, attr3_value) | 
| LITERAL_B("attr1_value", attr2_value, attr3_value) | 
+-----------------------------------------------------+ 

我发现只有这个例子here,但使用String类的枚举名称属性。我认为,这应该不同于使用public enum而不指定枚举名称数据类型。

+-----------------------------------------+ 
| <<enumeration>>      | 
|  CarType       | 
+-----------------------------------------+ 
| +sedan : String = SEDAN    | 
| +liftback : String = LIFTBACK   | 
| +stationWagon : String = STATION_WAGON | 
+-----------------------------------------+ 

非常感谢您的回答。

回答

4

我不认为你可以建模UML中的每个枚举文字的属性值。
EA使用如下标记为具有属性的枚举:

enter image description here

您可以文件某处在每个音符的属性值的文字,或者你可以使用Excel文件或类似的东西来管理该数据。
通常,您只需要在设计时提供初始值,因为它们在运行时可能会发生变化。因此,如果您不能相信这些值是正确的,那么将这些值保留在您的模型中并没有多大用处。

+0

我会想,如果有需要的建设的最终值(常量) - 由定义常量 - 枚举,他们会已经在类图中以某种方式显示出来了。但我相信你对此的判断。谢谢。 – BBerry

-1

您可以使用官方文档http://www.omg.org/spec/UML/2.5以正式方式描述您的课程。在11.4.4节中,你会发现这样一些例子:

Example 1

+0

我没有看到这是一个具有最终属性的枚举,它在enum的构造函数中自动使用来创建常量。我的问题很具体。 – BBerry