17

我正在为拼字游戏设计一个类图。在其中一个类中,我声明了最终变量。谁能告诉我,如何在 UML 类图中将变量指示为 final?

4

3 回答 3

19

final 有不同的概念,它们都以不同的方式表示:

  • 最终定义,即它不能在子类中被覆盖 - 这对应于属性的isLeaf属性:

    isLeaf属性,当对特定的 RedefinableElement 为 true 时,指定它不应有重新定义。
    - UML 2.5 规范,第 99 页

    isLeaf=true的属性不再有官方符号;添加{leaf}是以前的官方表示法(UML 1.x),它仍然很常见。

  • final value,即它的值不能改变 - 这对应于属性的isReadOnly属性:

    如果一个 StructuralFeature 被标记为isReadOnly true,那么一旦它被分配了一个初始值,它就可能不会被更新。相反,当isReadOnly为 false(默认值)时,该值可能会被修改。
    - UML 2.5 规范,第 106 页

    只读属性的表示法包括附加{readOnly}到属性字符串。

  • 常量通常是指类本身的不可更改属性,而不是实例(静态最终属性)。在 UML 中,它将具有上述两个属性并且另外是静态的,这对应于isStatic属性:

    isStatic属性指定特性是与单独考虑的分类器实例相关(isStatic = false),还是与分类器本身相关(isStatic =true)。
    - UML 2.5 规范,第 105 页

    静态属性通过在属性定义下划线来表示。正如已经提到的,常量通常是大写的,但这只是一个约定。

因此,总而言之,值为“x”的String类型的常量属性FOO看起来像这样,并且另外加下划线(此处不支持):

+ FOO : String = "x" {readOnly,leaf}
于 2013-04-27T15:08:38.300 回答
14

常量(即最终)字段通过命名约定指示:常量应为 ALL_CAPS

资源

于 2013-04-27T13:01:10.173 回答
1

声明一个变量/属性 final 是实现细节。所以你不需要在你的类图中指定它,但你可以按照eboix.

UML 规范没有具体说明它。所以你可以遵循在ALL CAPS.

于 2013-04-27T13:13:07.457 回答