UML-序列图中的可选流是否需要if和else保护?

UML-序列图中的可选流是否需要if和else保护?,uml,sequence-diagram,Uml,Sequence Diagram,使用替代流时,序列图中是否需要if和else保护?例如,如果我有一个网站,一个人决定购买一个项目,该项目是保留的,如果他不付款,那么该产品将被删除,付款也将被删除。因此,如果您已经在客户和接口之间的交互中指定了[if payment cost accepted],那么让[if payment cost]有意义吗?如果您没有指定保护条件,两个选项都将被跳过。UML2.5的第17.6.3.7节(备选方案)说,“如果没有一个操作数有一个计算结果为true的保护,则没有一个操作数被执行,并且封闭的Int

使用替代流时,序列图中是否需要if和else保护?例如,如果我有一个网站,一个人决定购买一个项目,该项目是保留的,如果他不付款,那么该产品将被删除,付款也将被删除。因此,如果您已经在客户和接口之间的交互中指定了[if payment cost accepted],那么让[if payment cost]有意义吗?

如果您没有指定保护条件,两个选项都将被跳过。UML2.5的第17.6.3.7节(备选方案)说,“如果没有一个操作数有一个计算结果为true的保护,则没有一个操作数被执行,并且封闭的InteractionFragment的其余部分被执行。”

每个alt流都有显式或隐式保护(见第一段中的17.6.3.7)。如果未提供保护语句,则将其视为隐式的真正保护

如果您使用序列图对各种流进行建模,即使您在特定的图上只显示其中一个流,也应该在那里设置保护(否则您将有一个始终执行的流,通常这不是您希望使用alt进行建模的流)


正如Uffe所提到的,guard只包含一个逻辑语句,该语句的计算结果为true或false(没有'if'关键字)。

Jim L的答案很好。我想补充一点,对于警卫来说,习惯上只指定条件,而忽略“如果”。因此,您的警卫将[接受付款成本]。谢谢您,您的两个评论都很有帮助,并完成了我的回答。这更有道理。我完全没有注意到评论过的UML部分。谢谢你,这对Uffe的回复很有帮助,使其完整。