如何在序列图上显示“如果”条件?


193

我想知道,如何if在序列图上表示“ ”语句?

if (somethingShouldBeDone) {
       // Do it
} else {
       // Do something else
}

可以代表一切吗?问题是...在我的代码中,检查了大量条件以确定各种操作。如果我要显示动作,我想明确指出动作是由特定事件引起的。

如果可能,创建解决方案的图像表示。


1
我知道这个问题很旧并且我还没有进行搜索,但是这让我怀疑显示分支对于序列图来说是否也是一个好主意。我一直以为场景中已明确描述了序列的条件,因此序列中没有分支发生。通过描述具有自己的序列图的方案的变体来处理替代路径。这有点主观,所以也许我应该将其发布在Meta或软件工程上?
凯利·法国

Answers:


283

如果存在其他条件,则确实可以在序列图中表示UML术语中也称为替代项的条件。在此链接中,您可以找到有关此主题的一些不错的资源 http://www.ibm.com/developerworks/rational/library/3101.html

用alt分支


在Visio中,Alt还有其他名称吗?我似乎找不到它
James Raitsev

13
Visio本身不是UML建模工具。如果要使用UML 2.0,则需要找到一个完全实现2.0规范的Visio模具。网上有几种免费的模具,您可能想尝试一下:)这看起来不错(虽然没有尝试所有功能)softwarestencils.com/uml
GETah 2011年

除了Visio,是否还有其他UML工具。企业架构师足够好吗?
Venkat Madhav 2013年

1
@VenkatMadhav我真的不能说。我从未用过它的全部功能,但是从我在Google上发现的阅读来看,它应该非常不错
GETah 2013年

@Venkat我个人是视觉范式的粉丝。(visual-paradigm.com
Cody Poll

34

如果粘贴

A.do() {
  if (condition1) {
   X.doSomething
  } else if (condition2) {
   Y.doSomethingElse
  } else {
   donotDoAnything
  }
}

https://www.zenuml.com上。它将为您生成一个图表。如果/其他顺序图


@ Gholamali-Irani您是否尝试过Chrome扩展程序?
小鹏-ZenUML.com

如果是A.do(int condition)-如果.. else ... else,那么一个呼叫不能全部发生。流取决于条件参数。如果ZenUML可以画出来,那就太好了。这将是及时订购三个呼叫。
厨师角斗士

@ChefGladiator我不确定我是否理解您的意思。您能在这里添加一些伪代码吗?或者,您可以在网站上指向我。
小鹏-ZenUML.com

当然,这里是代码:wandbox.org/permlink/PURdGJc8YxJmpUh7 -有reuired所有需要满足的条件三个电话。UML序列应显示三个调用,而不是一个。
厨师角斗士

当然,活动图最好显示算法的内部结构/
Gladiator主厨,

2

很简单,使用Alt片段

让我们以ATM机的时序图为例。

IF卡插入有效,则提示“输入PIN” .... ELSE提示“ Invalid Pin”

然后这是相同的序列图

ATM机时序图

希望这可以帮助!


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.