非严格UML规范下序列图能否展示对象作为参数传入另一对象函数?
序列图传参场景展示问题解答
核心结论
在你给出的两个前提约束下,完全可以在序列图中展示对象作为参数传入其他对象函数的场景,你提到的隐藏参数信息的简化展示方式也是可行的,具体选择看你要传递的核心信息:
- 如果你的序列图核心是展示交互时序、参与对象的调用关系,不需要体现参数细节,只标注
add()调用的简化写法完全可用 - 如果你需要明确体现「object2作为入参传入add方法」的逻辑,只要灵活调整序列图的标注规则即可,不需要使用其他UML图
最优实现方式
不用修改序列图的基础结构,只需要调整调用消息的标注即可实现需求:
- 最直接的写法:将object1到object2的调用消息标注直接改为
add(object2),一眼就能看出入参是object2实例 - 如果需要补充参数属性细节,可以在调用箭头旁附加注释便签,标注
入参为O类实例,携带属性name="object2" - 要是还需要体现方法执行后的结果,可以在object1的生命线对应执行位置添加标注,说明
执行后自身name属性更新为"object1 + object2"
相关参考代码
你给出的JS逻辑代码如下:
var object1 = new O("object1"); var object2 = new O("object2"); object1.add(object2); alert(object1.name); // object1 + object2 function O(param) { this.name = param; this.add = function(param) { this.name = this.name + " + " + param.name; }; }
原示例序列图

内容的提问来源于stack exchange,提问作者Seymour Azzes
相关产品推荐
相关产品推荐

