如何在DIA中用时序图表示if语句?

7
有人知道如何在DIA中用序列图表示if语句吗?

请看这个问题:https://dev59.com/wU7Sa4cB1Zd3GeqP1CMw... - Eitan T
1
我认为在序列图中这样做并不合适。序列图应该描述一个序列(正如名称所示)。在我看来,它应该是用例的一个序列。如果用例有扩展(代表控制流),那么为每个扩展制作一个序列图。让程序员将其与状态图结合起来,然后决定if语句是否是控制流的正确方式。也许状态模式或类似模式更适合。这个决定不应该在序列图中做出 :) - davogotland
1
同时请查看http://stackoverflow.com/questions/6000268/uml-sequence-diagram-how-to-show-alternate-course。 - sfinnie
@EitanT 请查看此链接:http://www.ibm.com/developerworks/rational/library/3101.html它们代表了“if”。感谢您的回答。 - luistm
1个回答

17
基于@luistm提供的IBM链接中所示的“alt”框,我能够在Dia中复制出类似的东西: 带有“alternative combination fragment”的UML序列图 “alt”框是用UML大型包对象绘制的。(小型包不允许您调整大小。)
条件标签只是文本对象(在左侧工具栏的上部[静态]窗格中找到,标有T)。
虚线只是一个线条对象(来自同一静态工具栏窗格),箭头设置为普通线条,主体设置为虚线(在左侧工具面板底部完成,使用那3个箭头段)。
我必须玩弄对象菜单项的“置于后面”,“置于前面”,“向后发送”和“向前发送”,才能使它看起来正确,而不会相互阻挡。此外,我经常使用视图菜单的“刷新”命令来检查自己;通常,绘图会搞乱堆叠顺序和重叠,但“刷新”会再次将事情放回正确的位置。
它看起来并不像IBM链接中的图表(标签位于主框外而不是内部,框边界被生命线遮挡等),但我认为这是我们可以用Dia的库存UML对象做到的最好的。

那是我的解决方案。谢谢回答。 - luistm
有没有一些特殊的技巧可以调整激活框的大小? 拖动小橙色正方形(似乎是直觉上的方法)对我来说不起作用。 - teo
1
@teo:是的,调整激活框的大小有点不直观。你需要右键点击激活框,然后选择“添加连接点”或“增加连接点距离”。 - feuGene

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