如何在Dia中绘制自调用?

13

我刚开始使用 Dia。我正在尝试创建一个序列图,我想要表示“自身调用”。请问在Dia中如何实现这个功能?我无法弄清楚。

谢谢。

2个回答

19

首先,在您的生存期上放置一个与其基础相连的UML消息对象。

然后,双击箭头(或右键单击“属性”),并将“消息类型”下拉字段更改为递归,您将得到以下内容:

enter image description here

现在,您可以拖动绿色锚点以使消息箭头看起来符合您的要求。(注意:似乎使用递归消息对象,您只能通过在绿色锚点可能在的位置上单击该对象来选择该对象。我之所以说“可能是”,是因为当未选择对象时,您实际上无法看到该绿色锚点。)

如果您愿意,可以创建另一个UML生命线对象,并将其重叠在现有生命线上,例如:

extra lifeline example

虽然这不是理想的,因为实际上没有任何东西连接到这个第二个生命线上。由于递归消息对象不允许您选择要连接其箭头的位置,因为它会自动连接到它起源的生命线。而且,由于第二条生命线没有连接到任何东西,如果您移动对象,它将被落下。但是,如果您追求美观,这看起来还不错。:)


非常感谢。有趣的是,似乎缺少非递归的自调用。 - JDelage
1
我认为你对“递归”有误解。通常我们想到递归时会想到“递归函数”,但在这里,我们有一个“对象调用自身”,而不是“函数调用自身”。从这个意义上讲,任何自我调用都是递归的定义。 - feuGene

-1
在UML中,自调用(或任何其他关联)最好使用标准关联符号而不是消息符号来表示。在DIA中,从左侧的工具箱中插入一个关联符号并将其添加到画布中。然后,为了使它递归地连接一个类(到它自己),双击它并选择“自动路由”作为“否”。这将使您能够自己塑造路线,并不会限制您将类链接到自身时绘制的自动直线。
你最终会得到类似于这样的东西(在这个例子中,它代表链表中的一个节点): enter image description here

1
问题是关于序列图中的自调用,而不是类图。 - tobias_k

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接