如何在序列图中展示“if”条件?

281

我在想,如何在序列图中表示 "if" 语句?

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

这是否可以被表示出来?问题是...在我的代码中,检查了相当多的条件以确定各种操作。如果我要展示这些操作,我想明确说明这些操作是由特定事件引起的。

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


3
我知道这个问题很老了,而且我还没有搜索过,但它让我想知道在序列图中显示分支是否是一个好主意。我一直认为序列的条件在场景中是明确描述的,因此在序列过程中不会出现分支。替代路径通过描述具有自己序列图的场景变体来处理。这有点主观,所以也许我应该在Meta或可能的软件工程上发布它? - Kelly S. French
4个回答

394

1
在 Visio 中,“Alt” 被称为其他什么吗?我似乎找不到它。 - James Raitsev
13
Visio本身不是UML建模工具。如果想使用UML 2.0,需要找到一个完全实现2.0规范的Visio图形模板。网上有几个免费的图形模板可供选择,您可以尝试一些 :) 这里有一个看起来不错的(虽然没有尝试所有功能)http://softwarestencils.com/uml/ - GETah
1
@VenkatMadhav 我无法确切地说。我从谷歌上找到的阅读材料来看,它应该是相当不错的,但我从未充分利用过它。 - GETah
@Venkat 我个人很喜欢Visual Paradigm。(http://www.visual-paradigm.com/) - Cody Poll
1
@Jam,Visio 2013中有一个“替代片段”。 - SMUsamaShah
显示剩余4条评论

48

如果您复制粘贴

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

https://app.zenuml.com上输入内容,它将为您生成一个图表。If/else sequence diagram


@Gholamali-Irani,你试过Chrome扩展程序吗? - Devs love ZenUML
@ChefGladiator 我不确定我理解你的意思。您能否在此处添加一些伪代码?或者您可以指向该网站。 - Devs love ZenUML
当然,这里是代码: https://wandbox.org/permlink/PURdGJc8YxJmpUh7 --所有条件都满足需要三个调用。UML序列应显示三个调用,而不是一个。 - Chef Gladiator
当然,活动图更适合展示算法内部。 - Chef Gladiator
我认为不是这样的 :) 你需要从左边进行三个调用,每个调用都会使程序在F内部流动不同。一个调用对应一个活动。 - Chef Gladiator
显示剩余3条评论

27

非常简单,使用Alt片段

让我们以ATM机的顺序图为例。假设你想要:

IF 插入的卡有效,则提示“输入密码”... ELSE 提示“无效密码”

那么这里是相同的顺序图:

ATM机的顺序图

希望这有所帮助!


1
请查看https://plantuml.com/sequence-diagram中的分组消息部分。 - CrazyIvan1974

2

提醒一下,自VS 2017起,UML设计师已被移除。 - alelom
澄清一下,UML仍然在Visio中,只是不在Visual Studio中了。https://support.microsoft.com/en-us/office/uml-diagrams-in-visio-ca4e3ae9-d413-4c94-8a7a-38dac30cbed6 - David Gerding

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