【发布时间】:2014-03-23 06:09:20
【问题描述】:
我想详细了解一下序列图中alt和opt片段的区别,它们看起来很相似,我无法区分它们。有人知道这件事吗?
【问题讨论】:
标签: uml sequence-diagram
我想详细了解一下序列图中alt和opt片段的区别,它们看起来很相似,我无法区分它们。有人知道这件事吗?
【问题讨论】:
标签: uml sequence-diagram
alt 用于描述工作流的替代方案。只会执行其中一个选项。
opt 用于描述工作流程中的可选步骤。
例如,对于在线商店购买序列图,您可以使用opt 来描述用户如何根据需要添加礼品包装。 alt 可用于描述两种付款方式:使用信用卡或电汇。
UML specification 中的含义在第 17.12.15 节中描述。 opt 和 alt 是两种不同的运算符类型,以下是规范对它们的描述:
alt:
InteractionOperatorKind alt 指定 CombinedFragment 代表一种行为选择。在 将选择大多数操作数。所选操作数必须具有显式或隐式保护 在交互中此时计算为 true 的表达式。如果操作数隐含一个隐含的真守卫 没有警卫。
opt:
InteractionOperatorKind 选项指定 CombinedFragment 代表一种行为选择,其中 (唯一的)操作数发生或什么也没有发生。一个选项在语义上等同于一个备选方案 CombinedFragment,其中一个操作数为非空内容,第二个操作数为空。
【讨论】:
opt 片段意味着图表描述了两种可能的交互序列——一个具有opt 片段中的交互,另一个没有此交互。描述的条件可能从某些确定性计算 (2+2==4) 到用户选择 (red pill selected) 到随机事件 (atom decays)。意图是什么取决于图表作者。
Alt 是替代流程(SWITCH 或 if. IF 有两个路径) Opt 是 IF 有一个流程。如果你使用Opt,代码将被执行或不执行!
【讨论】:
Alt(替代)确实类似于“if”,但两者都不仅限于2个选项,两者实际上都可以根据需要有许多“else”,许多选项。例如: //if (a=b) then a++; else if (a>b) then a--;否则 b++。在任何情况下,如果 Alt 是正在调用的代码的一部分,则 Alt 将执行。
而 Opt(可选)不一定会被执行,即使它包含在正在调用的序列或代码的中间。通常,要执行 Opt 序列,需要用户进行外部交互,该用户正在做出提供许多选项的决定(例如选择在线支付方式)。在这种特殊情况下,与 Alt 序列相反,如果支付方式是“信用卡”、“pay pal”或“预付”,则代码将有 3 个 Opt 序列——每个序列只有一个流——但只有一个其中一个 Opt 序列将实际执行。
希望这会有所帮助!
最好, 标清
【讨论】:
它们基本相同。
alt 更多用于多种选择,例如 C 编程语言中的 switch 句组。而opt 更多地只用于两个选项,例如if 句子。
但是,如果您看到这两个概念可以互换使用,请不要感到惊讶。
【讨论】:
Alt alternative alt one 可以认为它与 if .... else 它是条件处理的相同。 可选 opt 它是可能发生或不发生的行为(视情况而定)
【讨论】: