类图中的局部变量

2003年10月6日

如何在 UML 类图中显示局部变量(参数、临时变量等)?

简单来说,你不需要这样做。我不记得有哪种情况下需要这样做。我见过有人这样做,但它并没有传达太多有用的信息。

如果你真的需要这样做,我建议你使用带有「关键字」的依赖关系,然后去洗个冷水澡。如果一个对象在局部变量中存储了另一个对象的实例,那么这肯定意味着某种形式的依赖关系。事实上,通常当这种依赖关系值得一提时,只有依赖关系的存在才重要,所以我不会费心使用关键字。

有些书谈论使用关联的构造型来实现这一点;事实上,UML 1.3 规范也建议这样做。这样做的原因比较复杂,与 UML 元模型中的问题有关。如果你想在协作图中显示实例之间的链接,则需要在元模型中表示它们。他们找到的解决方法是使用构造型关联。他们在 UML 2 的元模型中找到了更好的方法——所以在 UML 中,这些构造型消失了。

我反对使用关联符号来表示这一点的原因是,我认为在方法调用范围内存在的关联和在整个类生命周期中存在的关联之间存在着重要的区别——后者的关联更为重要。因此,我只喜欢将关联用于那些更长寿的关联。