当前位置: 首页 > 知识库问答 >
问题:

具有属性的UML建模枚举

伍溪叠
2023-03-14

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

我在这里只找到了这个示例,但它使用String类属性作为枚举名称。我认为,这应该不同于公共枚举的用法,而不指定枚举名称数据类型。

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

共有2个答案

卫甫
2023-03-14

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

柯英奕
2023-03-14

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

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

 类似资料:
  • 问题内容: 考虑: 有没有办法使这种简单枚举的思想适应这种情况?(请参阅此问题)理想情况下,就像在Java中一样,我想将它们全部塞入一个类中。 Java模型: 问题答案: Python 3.4具有新的Enum数据类型(已反向移植为,并增强为1)。无论和2轻松支持您的使用情况: [ py2 / 3] [ py2 / 3或3.4+] 并在使用中: 1披露:我是Python stdlib ,backpo

  • 问题内容: 我是Swift的新手,只是在文档中遇到了这一点: 计算的属性由类,结构和枚举提供。存储的属性仅由类和结构提供。 这是为什么?枚举的关联值是否像存储属性一样工作?似乎他们最初存储了属性- 问题答案: 确实具有存储的 类型 属性-即属性。他们没有存储的 实例 属性。我不知道是否存在技术上的原因为什么存储的实例属性不可用于。如果您想要“为什么”的技术答案,则可能需要在开发论坛上提问。 在您的

  • 有没有一种方法可以在Laravel中检索具有所有属性的模型,即使这些属性为空?它似乎只返回属性不为null的模型。 原因是我有一个函数,如果模型中存在属性,它将从数组中更新模型属性。在设置模型之前,我使用property_exists()函数检查模型是否具有特定属性。数组键和模型属性应该匹配,所以它就是这样工作的。 如果模型已经设置了属性,它可以正常工作,因为属性存在并从数组中获取值。但是,如果属

  • 我试图学习数组对象在Java但不明白。我确实明白如何将输入存储到数组对象中,但不明白如何比较数组中的每个项来做#7和#8。我试图在网上搜索,但从那里卡住了。 > 创建具有以下属性的班级学生:姓名、年龄、地址、电子邮件地址 创建一个空构造函数,用于初始化所有属性的空值。 创建一个接受所有参数并初始化所有属性的构造函数。 为所有属性创建访问器和变异器方法。 创建一个toString方法以返回学生的详细

  • 我想知道是否有什么方法可以使属性值动态。类似于这样: 感谢您的反馈。在我的例子中,属性值是系统特定的,应该在测试运行时生成。