2015-03-13 122 views
1

如果我没有(想要)添加四个保留可见性之一,那么UML2中是否存在默认可见性? 据我所知有+为公众,-为私人,#为保护和~为包。UML默认可见性

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

到目前为止感谢。

回答

2

如果你不添加它,那么这是一个不关心。语言本身有自己的规则,UML不知道语言会如何处理它。工具也是一样。他们将其中一个符号(公开或私有)作为默认值,最终可以将默认值更改为其他值。但是UML再次不在乎。

根据您的使用方式,您可以告诉读者,丢失的符号意味着这个或那个。

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

7.3.38 Package(from Kernel)...查询makesVisible()定义Package是否使元素在其自身之外可见。元素 没有知名度,并与公众知名度元件由 可见“和” 39年3月7日PackageableElement(从内核)... 知名度...缺省值是公共

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

请注意,没有默认的可见性。此外,即使在模型中具有某些值(例如,由UML工具存储),可见性也可能被抑制显示在图上。所以,如果能见度没有在图表中显示,它可能没有被指定或被抑制

请注意,我的原始声明只是我在现实世界中使用UML的体验的表达。感觉很好,看到我的经验似乎与理论同步;-)

编辑2:调查2.5规格我在章找到了这个。 7.8页上的分类器说明。 48:

属性

-能见度:VisibilityKind [0..1] =公共

甲PackageableElement必须如果它是由一个拥有命名空间中指定的可见度。默认可见度是公开的。

约束

-namespace_needs_visibility

一个PackageableElement一个命名空间拥有一定要有知名度。

inv: visibility = null implies namespace = null

所以说默认为公开。但约束条件表明它必须具有可见性。对我而言意味着你需要指定它?

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

+1

你是对的,但我从实际经验说话。大多数人使用工具来建模UML。 OMG的规格也应该与一粒盐...... – 2015-03-13 15:59:50

+0

@xmojmr我的荣幸:-) – 2015-03-13 19:14:53

+0

所以根据OMG规范,默认的可见性是公开的,而不是未定义的答案? – Catweazle 2015-10-18 13:32:00