UML 默认可见性

UML default visibility

如果我不想(想要)添加四个保留可见性之一,UML2 中是否有默认可见性? 据我所知,public 有 +,私有有 -,受保护有 #,包有 ~

或者是默认值取决于应该使用的实现语言,例如Java 的包还是 C++ 的私有?

谢谢。

如果您不添加它,则无关紧要。语言本身有自己的规则,UML 不知道语言将如何对待它。工具也是如此。他们将其中一个符号(public 或私有)设置为默认值,您最终可以将默认值更改为其他符号。但是 UML 还是不关心。

根据您的使用方式,您可以告诉 reader 缺少的符号意味着这个或那个。

编辑 1: 感谢@xmojmr 深入研究 UML 规范和伟大的评论家 uml-diagrams.org 这里有两个陈述。 OMG 优先 (SS2.4.1):

7.3.38 Package (from Kernel)...The query makesVisible() defines whether a Package makes an element visible outside itself. Elements with no visibility and elements with public visibility are made visible" and "7.3.39 PackageableElement (from Kernel)... visibility...Default value is public

来自http://www.uml-diagrams.org/property.html

Note, that there is no default visibility. Also, visibility may be suppressed from being displayed on a diagram, even if it has some value in the model (e.g. stored by UML tool). So, if visibility is not shown on a diagram, it was either not specified or suppressed

另请注意,我的原始陈述只是表达了我在现实世界中使用 UML 的经验。很高兴看到我的经验似乎与理论同步;-)

编辑 2: 查看 2.5 规范,我在第 1 章中找到了这个。 7.8 分类器描述48:

Attributes

- visibility : VisibilityKind [0..1] = public

A PackageableElement must have a visibility specified if it is owned by a Namespace. The default visibility is public.

Constraints

- namespace_needs_visibility

A PackageableElement owned by a Namespace must have a visibility.

inv: visibility = null implies namespace = null

所以它说默认是public。但是约束说它必须具有可见性。这对我来说意味着您需要指定它?

如果你不明白定义,请阅读定义:-/