组合片段的类型由交互运算符确定。可以使用组合片段来以一种紧凑而简洁的方式描述多种控制和逻辑结构。交互运算符标识用来定义组合片段的行为的逻辑或条件语句的类型。
如下图所示,组合片段显示为涵盖生命线并且包含交互操作数的框。通过在每个操作数之间使用水平虚线,组合片段将所包含的交互操作数分隔开。
交互运算符定义组合片段的语义并确定如何在组合片段中使用交互操作数。运算符定义要对操作数应用的逻辑条件类型。例如,带有备用(alt)交互运算符的组合片段的作用相当于 if-then-else 语句。在前面的图中,循环和备用(alt)交互运算符定义了两个组合片段。
在时序图中,交互操作数是一个容器,它将交互片段和满足警戒条件就会产生的消息集中在一起。如果没有警戒条件,则该块始终都会运行。
每个交互操作数都是一个交互片段,并且涵盖了组合片段中的各个生命线。交互操作数包含警戒条件,而警戒条件中包含交互约束。仅当警戒条件的值为 true 时才会运行交互操作数。
根据交互运算符类型的不同,一个组合片段中可以具有一个或多个交互操作数。而每个操作数必须具有一个警戒条件。
在创建交互操作数时,它显示为展开状态。可折叠交互操作数来隐藏操作数、其关联消息和交互片段,以及使交互框中组合片段的大小最小化。
在前面的图中,备用(alt)组合片段包含两个交互操作数。一个交互操作数具有警戒条件 x>5,另一个交互操作数具有警戒条件 x<=5。如果 x=6,则会运行 x<=5 警戒条件以及相应的操作数和消息。而警戒条件 x>5 以及相应的操作数和包含的消息则不会运行。
在时序图中,警戒条件包含一个交互约束。交互约束可以是一个布尔条件表达式,而在使用循环交互运算符时,交互约束则是一个用于指定运行循环的最低次数和最大次数的表达式,还可以选择指定增量值。
警戒条件是语义条件或限制。在组合片段内,使用方括号在交互操作数中设置警戒条件。在创建组合片段时,会自动创建警戒条件。也可以在没有警戒条件的交互操作数中手工创建警戒条件。
警戒条件在交互开始时就会出现,它包含决定是否运行交互操作数时所需要的所有信息。如果警戒条件的值为 true,则交互片段就会运行。
![]() |
// This section is a combined fragment //if else represents the interaction operator //if-else is the Alternative(alt) combined fragment if ( value is greater than 5) // the condition in the () is the guard condition // The code in the {} is the interaction operand // It runs if the guard condition is true { A send a message to B; B sends a return message to A; } else if(x is less than or equal to 5) { B sends a message to A; } |