【发布时间】:2013-04-27 12:59:17
【问题描述】:
我正在为拼字游戏设计一个类图。在其中一个类中,我声明了最终变量。谁能告诉我,如何在 UML 类图中将变量指示为 final?
【问题讨论】:
标签: class uml final class-diagram
我正在为拼字游戏设计一个类图。在其中一个类中,我声明了最终变量。谁能告诉我,如何在 UML 类图中将变量指示为 final?
【问题讨论】:
标签: class uml final class-diagram
final 有不同的概念,它们都以不同的方式表示:
最终定义,即它不能在子类中被覆盖 - 这对应于属性的 isLeaf 属性:
isLeaf 属性,当一个特定的 RedefinableElement 为 true 时,指定它不应有重新定义。
- UML 2.5 规范,第 99 页
isLeaf=true 的属性不再有官方符号;添加{leaf} 是以前的官方表示法(UML 1.x),现在仍然很常见。
最终值,即它的值不能改变 - 这对应于属性的 isReadOnly 属性:
如果一个 StructuralFeature 被标记为 isReadOnly true,那么一旦它被分配了一个初始值,它就可能不会被更新。相反,当 isReadOnly 为 false(默认值)时,该值可能会被修改。
- UML 2.5 规范,第 106 页
只读属性的符号包括将{readOnly}附加到属性字符串。
constant 通常是指类本身的不可更改属性,而不是实例(static final 属性)。在 UML 中,它将具有上述两个属性并且另外是静态的,这对应于 isStatic 属性:
isStatic 属性指定特征是与单独考虑的分类器实例相关(isStatic=false),还是与分类器本身相关(isStatic=真)。
- UML 2.5 规范,第 105 页
在属性定义下划线表示静态属性。正如已经提到的,常量通常是大写的,但这只是一个约定。
因此,总而言之,类型为 String 且值为“x”的常量属性 FOO 看起来像这样,并且另外加上下划线(这不是此处支持):
+ FOO : String = "x" {readOnly,leaf}
【讨论】:
常量(即最终)字段通过命名约定表示: 常量应该是 ALL_CAPS
【讨论】:
声明一个变量/属性 final 是实现细节。所以你不需要在你的类图中指定它,但你可以遵循eboix建议的约定。
UML 规范没有具体说明它;所以你可以遵循在ALL CAPS中显示它的约定。
【讨论】: