UML默认可见性

时间:2015-03-13 11:09:28

标签: uml

如果我不想(想)添加四个保留的可见性中的一个,那么

UML2中是否存在默认可见性? 据我所知,公开+,私有-,受保护#和广告~

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

到目前为止,谢谢。

1 个答案:

答案 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

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

如果您不理解定义,请阅读定义的定义: - /