如何在协作图中展示对象赋值?以给定Java代码为例
UML协作图中如何展示对象赋值操作?
我为以下Java代码制作了协作图,想了解如何在图中展示对象赋值操作,尤其是代码中aNode = path.getLastPathComponent()这一行的赋值。我尝试按代码的方式展示,但不确定是否正确,或许对象间的关系会让赋值隐含其中,希望能得到帮助。感谢!
/* @author Scott Violet */ public class SampleTreeModel extends DefaultTreeModel { public SampleTreeModel(TreeNode newRoot) { super(newRoot); } public void valueForPathChanged(TreePath path, Object newValue) { DefaultMutableTreeNode aNode = (DefaultMutableTreeNode)path.getLastPathComponent(); SampleData sampleData = (SampleData)aNode.getUserObject(); sampleData.setString((String)newValue); if (this.isColorGreen) sampleData.setColor(Color.green); else sampleData.setColor(Color.black); nodeChanged(aNode); } }
协作图赋值操作的规范画法
在UML协作图里,对象赋值(尤其是通过方法调用返回值赋值)可以这样处理:
针对
aNode = path.getLastPathComponent()这行:- 先画消息流:从当前
SampleTreeModel的this对象,向path对象画带箭头的连线,标注调用方法getLastPathComponent()。 - 显式标注赋值:在连线的返回方向,添加
aNode := 返回值的标注——:=是UML标准的赋值符号,明确说明path返回的对象被绑定到本地变量aNode上。 - 补充临时节点:因为后续要通过
aNode调用方法,所以需要在图中画出aNode这个临时对象节点,后续的getUserObject()调用从这个节点发起。
- 先画消息流:从当前
其他赋值逻辑(比如
sampleData = aNode.getUserObject()):
完全套用上面的规则:先画aNode到自身的getUserObject()调用连线,返回端标注sampleData := 返回值,同时画出sampleData节点,用于后续的setString()、setColor()调用。别踩隐含关系的坑:
不要指望用对象间的关联关系代替显式赋值——协作图的核心是展示消息传递和数据流向,赋值是明确的变量绑定动作,必须显式标注,不然看图的人搞不清临时变量的来源和作用。
内容的提问来源于stack exchange,提问作者rtxa
相关产品推荐
相关产品推荐

