【问题标题】:How to draw a self-call in Dia?如何在 Dia 中绘制自调用?
【发布时间】:2012-08-02 22:07:54
【问题描述】:

我刚开始使用 Dia。我正在尝试构建一个序列图。我想代表自我调用。在 Dia 怎么做到这一点?我想不通。

谢谢。

【问题讨论】:

    标签: uml dia


    【解决方案1】:

    首先放置一个 UML Message 对象,它的基础连接到您的生命线。

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

    现在您可以拖动绿色锚点,使消息箭头看起来像您想要的那样。 (注意事项:似乎对于递归消息对象,您只能通过在绿色锚点所在的位置单击该对象来选择该对象。我说“将是”,因为您当然看不到未选择对象时的绿色锚点。)

    如果您愿意,可以创建另一个 UML 生命线对象,并将其与现有生命线重叠,如下所示:

    但这并不理想,因为第二条生命线实际上并没有连接任何东西。 Recursive Message 对象不允许您选择在何处附加它的箭头,因为它会自动附加到它起源的生命线。而且因为第二条生命线没有连接任何东西,如果你在它周围移动物体,它就会被抛在后面。但是,它看起来确实很漂亮,如果这就是你所追求的。 :)

    【讨论】:

    • 非常感谢。有趣的是,似乎缺少非递归自调用。
    • 我认为你在这里对“递归”有错误的想法。通常,当我们想到递归时,我们会想到“递归函数”,但这里不是“调用自身的函数”,而是“调用自身的对象”。从这个意义上说,根据定义,任何自调用都是递归的。
    【解决方案2】:

    UML 中的自调用(或任何其他关联)最好使用标准关联表示法而不是消息一表示。在 DIA 中,从左侧的工具箱中插入关联符号并将其添加到您的画布中。然后为了让它递归地连接一个类(到自己)双击它并单击选择“自动路由”作为否。这将使您能够自己塑造路线,并且不会将您限制在将类链接到自身时绘制的自动直线。

    你最终会得到这样的结果(在这个例子中,它是链表中节点的表示):

    【讨论】:

    • 问题是关于序列图中的自调用,而不是类图中的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    相关资源
    最近更新 更多