結合フラグメントのタイプは、相互作用操作子によって決定されます。 結合フラグメントを使用すると、コンパクトかつ簡潔に、 複数の制御構造および論理構造を記述することができます。 相互作用操作子は結合フラグメントの振る舞いを定義する、論理または条件ステートメントのタイプを識別します。
結合フラグメントに、ネストされた結合フラグメントや相互作用使用を含めて、 メッセージのフローに影響する非常に複雑な構造を表す追加の条件構造を含めることもできます。
以下の図にあるように、結合フラグメントは、ライフラインをカバーし、 相互作用オペランドを含む、フレームで表されます。 結合フラグメントに含まれている相互作用オペランドは、 各オペランド間を水平方向に結ぶ破線によって、分離されています。

相互作用操作子は、 結合フラグメントのセマンティクスを定義し、 結合フラグメント内での相互作用オペランドの使用方法を決定します。 演算子は、オペランドに適用する論理条件のタイプを定義します。 例えば、代替 (alt) 相互作用操作子を持つ結合フラグメントは、if-then-else ステートメントと同様の働きをします。 前の図では、ループおよび代替 (alt) 相互作用操作子が、2 つの結合フラグメントを定義しています。
シーケンス図における相互作用オペランドは、 ガード条件が満たされた場合に実行される相互作用フラグメントとメッセージをグループ化するコンテナーです。 ガード条件がない場合、そのブロックは常に実行されます。
相互作用オペランドは、それぞれが相互作用のフラグメントであり、 結合フラグメント内のライフラインをカバーしています。 相互作用オペランドには、相互作用制約を含むガード条件が含まれます。 相互作用オペランドは、ガード条件が true とテストされる場合にのみ実行されます。
相互作用操作子のタイプによって、結合フラグメントに 1 つまたは複数の相互作用オペランドを入れることができます。それぞれのオペランドごとに、ガード条件が存在する必要があります。
前の図では、代替 (alt) 結合フラグメントに 2 つの相互作用オペランドが含まれます。 1 つはガード条件が x>5 の相互作用オペランドで、もう 1 つはガード条件が x<=5 の相互作用オペランドです。 x=6 の場合、x<=5 ガード条件および対応するオペランドとメッセージが実行されます。 x>5 ガード条件および対応するオペランドとそれに含まれるメッセージは実行されません。
シーケンス図では、ガード条件に、ブール条件式である相互作用制約が含まれるか、または、ループの場合には、ループが実行される最小回数および最大回数を指定する式、およびオプションでインクリメンタル値が含まれます。
ガード条件は、結合フラグメントにある相互作用オペランド内で大括弧で設定される、 意味条件または意味制限です。 結合フラグメントを作成すると、ガード条件が自動的に作成されます。 既存のガード条件が存在しない相互作用オペランド内に、 ガード条件を手動で作成することもできます。
ガード条件は、相互作用の開始段階で登場し、 相互作用オペランドを実行するかどうかを決定するために必要な、 すべての情報を含んでいます。 ガード条件が true とテストされると、相互作用フラグメントが実行されます。
![]() |
// このセクションは結合フラグメントです
//if else は相互作用操作子を表します
//if-else は代替 (alt) 結合フラグメントです
if ( value is greater than 5)
// () 内の条件はガード条件です
// {} 内のコードは相互作用オペランドです
// これは、ガード条件が 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;
}
|