UML2中是否存在默认可见性?
据我所知,公开+
,私有-
,受保护#
和广告~
。
或者默认值取决于应该使用的实现语言,例如用于Java的包或用于C ++的私有包?
到目前为止,谢谢。
答案 0 :(得分:2)
如果你没有添加它,那么它就不在乎了。语言本身有自己的规则,UML不知道语言如何对待它。工具也是如此。它们将其中一个符号(公共或私有)作为默认值,您最终可以将默认值更改为其他符号。但UML再也不关心了。
根据您的使用方式,您可以告诉读者缺少的符号意味着这个或那个。
编辑1:感谢@xmojmr深入研究UML规范,这里有很多评论家uml-diagrams.org是两个陈述。 OMG第一(SS2.4.1):
7.3.38包(来自内核)...查询makesVisible()定义Package是否使元素在其自身之外可见。分子 没有可见性和具有公众可见度的元素 可见"和" 7.3.39 PackageableElement(来自内核)...... visibility ...默认值为public
和http://www.uml-diagrams.org/property.html
请注意,没有默认的可见性。此外,即使在模型中具有某些值(例如,由UML工具存储),也可以抑制可见性在图上显示。因此,如果图表上未显示可见性,则未指定或禁止
请注意,我原来的陈述只是表达了我在现实世界中使用UML的经验。很高兴看到我的经历似乎与理论同步; - )
编辑2:查看我在第二章中发现的2.5规范。 7.8分类器描述。 48:
<强>属性强>
-可见性:VisibilityKind [0..1] = public
如果PackageableElement由Namespace拥有,则必须具有指定的可见性。默认的可见性是公开的。
<强>约束强>
-namename_needs_visibility
命名空间拥有的PackageableElement必须具有可见性。
inv: visibility = null implies namespace = null
所以它说默认是公开的。但约束说它必须具有可见性。对我来说意味着你需要指定它?
如果您不理解定义,请阅读定义的定义: - /