2011-11-06 90 views
8

类可见性是对象设计的重要组成部分。我还没有看到任何示例图在多个UML书籍中显示非公共类,也没有看到在Enterprise Architect中显示类可见性的方法以及其他工具。 Enterprise Architect和其他工具允许您在元模型中设置类的可见性,但我还没有看到在图表中显示的方法。可以在UML类图上显示类的可见性吗?

+0

我不认为UML标准提供了可见性的具体表示法,因为它是一种语言相关的功能。 – Heisenbug

+0

谢谢@Heisenbug。我能够看到Enterprise Architect软件包图上的类可见性。这可能是在此特定工具中查看它的唯一方法。我的下一步是回顾UML规范的相关部分。 –

+2

我相当肯定的是,一个包图实际上是在Enterprise Architect中查看元素可见性(即范围)的唯一方法。因为您已经做过侦探工作,所以我不会将其作为答案发布,但请您自己考虑这样做(并且将回答的问题标记为未来的搜索者)。 – Uffe

回答

0

在Eclipse中,您可以看到图标。我的意思是你有一个绿色的班级图标,如果是私人的,那么一个p就放在最上面。 如果选择该选项,该图标在类图中也可见。 希望得到这个帮助。

0

UML支持以编程语言无关的方式提供可见性,无论是在元模型还是代表中。

有一个名为VisibilityKind的枚举在各个地方使用(请参阅UML 2.3 superstructure spec第7.3.5.5节p142)。

在类图上有多种方式来说明可见性。最常见的是用' - '代表私人特征,用'+'代表公开。例如:关于多个示例the spec P52

---------------------------- 
| Class     | 
|--------------------------| 
| +publicAttribute: Type | 
| -privateAttribute: Type | 
|--------------------------| 
| +publicMethod()   | 
| -privateMethod()   | 
---------------------------- 

参见图7.28/7.29。

hth。

+1

你的答案属于类成员可见性,而不是类本身的可见性。 –

+0

@BjörnPollex可视性与某个范围有关,没有范围可视性没有意义。类实例可以是另一个类实例的成员,在这种情况下,它的可见性可以像在这个答案中看到的一样。 – SomeWittyUsername

0

我只是看着它在UML 2.4.1基础设施。在图10.3页。 95你看到类被定义为一个类型,它是一个元素的NamedElement。使用可见性包,NamedElement具有第9.21.1页中定义的可见性。 88,如果它属于一个命名空间。所以如果你有可见性,Class就具有可见性。您可以使用+ - #和〜(第89页)的常用符号。

VisualParadigm可以做到这一点。

1

按照UML规范2.5版的β2不仅NamedElement而且PackageableElement具有类型的属性能见度VisibilityKind

从P48

PackageableElement [抽象类]

.. [剪断] ..

属性

  • visibility:VisibilityKind [0..1] = public如果一个PackageableElement由一个名称空间拥有,则它必须具有指定的可见性。默认可见度是公开的。

约束

  • namespace_needs_visibility 一个PackageableElement一个命名空间拥有一定要有知名度。 INV:知名度= null表示命名空间= NULL

我还没有找到这种可见的任何符号指引然而

0

如果你有成见定义的类(比如< <类> >)然后可以将形状脚本分配给原型。如果您指定的装饰,这应该使用默认绘制的一类,并添加装饰,它可以基于类的作用域属性是有条件的:

decoration X 
{ 
    if(hasproperty("scope","public")) 
    print("P"); 
} 

这将打印在P的顶公共课的左角。但是,您可以同样有一个图标。

不幸的是,我找不到一种将形状脚本分配给默认的非定型类的方法。任何人都知道如何做到这一点?

相关问题