gpt4 book ai didi

java - 如何在 UML 中对枚举进行建模,以便它们表达键值关系?

转载 作者:行者123 更新时间:2023-12-04 00:14:18 24 4
gpt4 key购买 nike

我想在 UML 枚举类型中表示一些键值对。例如,假设我们有一些元素及其符号:

ROAD => 'R'
CAR => 'C'
NOTHING => ' '

在 Java 中,它类似于以下内容:

public enum AsciiCodes { 
ROAD ('R'),
CAR ('C'),
NOTHING (' ');

private final char code;

private AsciiCodes(char code) {
this.code = code;
}
}

如何在 UML 中表示?

到目前为止我所拥有的:

enter image description here

最佳答案

在 UML ROAD, CARNOTHINGEnumerationLiteral 并且在类图中它们显示在隔间 literals 显示他们的名字,仅此而已。

作为 Datatype 的枚举可能具有属性,但是您的 Java 中的属性 code 不能像您那样被属性支持,因为它与枚举无关,但是枚举字面量

当然,EnumerationLiteral不是枚举的属性,也不是枚举的实例,而是InstanceSpecification

因此,在您通过构造型扩展枚举以将 code 添加为 之前,没有任何标准允许为每个枚举文字建模 code 及其值StructuralFeature,在这种情况下,code 的值将通过 Slot

指定

formal/2017-12-05见:

  • § 10.5.3 枚举第 175 页
  • § 10.5.4 枚举字面量第 175 和 176 页
  • § 9.9.9 实例规范第 140 页

[编辑]

Christophe 阅读启发的 UML 中的替代表示的答案。

另一种方法是完全忘记 UML EnumerationLiteral,并通过静态只读属性提供的专用实例本身对每个 Java 枚举文字进行建模。

AsciiCodes 仍然可以是 UML 枚举。

enter image description here

请注意,在您的 Java 定义及以上内容中,code 的值在外部是不可用的,然后最终无用,直到添加一个操作以按照 Christophe 中的建议返回它的答案。

顺便说一句,这就是我仍然在 BoUMLplug-out 的 API 中实现枚举的方式对于 Java,使用由 Java 代码生成器专门管理的构造型 enum_pattern。我在 2005 年开始分发 BoUML,当时 Java 中还没有枚举。

关于java - 如何在 UML 中对枚举进行建模,以便它们表达键值关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65002225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com