【问题标题】:UML modelling enumeration with attributes带有属性的 UML 建模枚举
【发布时间】:2016-05-11 09:57:43
【问题描述】:

我想创建一个带有一个或多个属性的 Java 枚举(枚举)的 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 |
+-----------------------------------------+

【问题讨论】:

    标签: java enums uml class-diagram


    【解决方案1】:

    我认为您不能为 UML 中的每个枚举文字的属性值建模。
    EA 对具有属性的枚举使用以下表示法:

    您可以在每个文字的注释中的某处记录属性值,也可以使用 excel 文件或类似文件来管理该数据。
    通常您只需要在设计时提供初始值,因为它们可能会在运行时更改。因此,如果您不能相信它们是正确的,那么将这些值保留在您的模型中并没有多大用处。

    【讨论】:

    • 我认为,如果最终值(常量)需要用于构造 - 通过定义常量 - 枚举,它们会以某种方式显示在类图中。但我相信你对此的判断。谢谢。
    【解决方案2】:

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

    【讨论】:

    • 我不认为这是一个具有最终属性的枚举,它们在枚举的构造函数中自动用于创建常量。我的问题很具体。
    猜你喜欢
    • 2018-07-31
    • 2012-09-22
    • 2014-08-30
    • 1970-01-01
    • 2010-12-22
    • 2019-06-30
    • 1970-01-01
    • 2012-04-21
    • 2010-09-29
    相关资源
    最近更新 更多