类可见性是对象设计的重要组成部分。我没有在几本 UML 书籍中看到任何显示非公共类的示例图,也没有看到在 Enterprise Architect 和其他工具中显示类可见性的方法。Enterprise Architect 和其他工具允许您在元模型中设置类可见性,但我还没有看到在图表中显示这一点的方法。
6 回答
根据 UML 规范 v2.5 beta 2 不仅 NamedElement 而且 PackageableElement 具有 VisibilityKind 类型的属性 Visibility
从第 48 页开始:
PackageableElement [抽象类]
..[剪辑]..
属性
- 可见性:VisibilityKind [0..1] = public 如果 PackageableElement 归命名空间所有,则它必须具有指定的可见性。默认可见性是公开的。
约束
- namespace_needs_visibility 命名空间拥有的 PackageableElement 必须具有可见性。inv:可见性 = null 意味着命名空间 = null
但是,我还没有找到任何关于这种可见性的符号指南
在 Eclipse 中,您可以看到图标。我的意思是你有一个绿色的类图标,如果是私有的,那么 ap 放在顶部。如果您选择该选项,该图标在类图中也可见。希望这有帮助。
UML 以编程语言中立的方式支持元模型和表示中的可见性。
有一个名为 VisbilityKind 的枚举在不同的地方使用(参见UML 2.3 上层结构规范第 7.3.5.5 p142 节)。
在类图上有多种方式来说明可见性。最常见的是使用“-”表示私有特征,使用“+”表示公开。例如:
----------------------------
| Class |
|--------------------------|
| +publicAttribute: Type |
| -privateAttribute: Type |
|--------------------------|
| +publicMethod() |
| -privateMethod() |
----------------------------
有关更多示例,请参见规范p52 上的图 7.28 / 7.29 。
hth。
我认为你需要看看单向和双向关联
我只是在 UML 2.4.1 Infrastructure 中查找它。在图 10.3 上。95 你看到 Class 被定义为一个 Type,它是一个 NamedElement,它是一个元素。使用可见性包,NamedElement 具有第 9.21.1 页中定义的可见性。88,如果它属于一个命名空间。因此,如果您具有可见性,则 Class 具有可见性。您可以使用带有 + - # 和 ~ 的常用符号(第 89 页)。
VisualParadigm 可以做到这一点。
如果你用原型定义你的类(比如<<class>>),你可以为原型分配一个形状脚本。如果你只指定一个装饰,这应该使用一个类的默认绘图,并添加你的装饰,这可以是基于类的范围属性的条件:
decoration X
{
if(hasproperty("scope","public"))
print("P");
}
这会在公共类的左上角打印一个 P。但是,您同样可以有一个图标。
不幸的是,我找不到将形状脚本分配给默认非定型类的方法。有谁知道该怎么做?