2016-10-24 12 views
1

これはumlの基本的な質問です。私は、ループを開始し、いくつかのオブジェクトを作成する自己への呼び出しを持っています。私はこのself-to-selfの矢印がループの内側か外側かを指すべきかどうか疑問に思います。私はここでの違いを説明しました:UMLシーケンス図Call-to-self-loop

Sequence Diagram

+2

自己呼び出しに問題があります。第2レベルは開きません。 –

答えて

2

私はあなたのツールを知らないが、自己の呼び出しは次のようになります。

enter image description here

あなたはループが自己の呼び出し内にあることがわかります。

+0

私はmagicdrawを使用しています。スクリーンショットを作成したツールとは何ですか? – Viktor

+0

あなたの例では、それは自己呼び出しである反復的なメッセージ対話のように見えます。両者の違いは何ですか? – Viktor

+0

私はここでその質問にまともな答えを見つけました:[リンク] http://stackoverflow.com/questions/11626473/self-messagenon-recursive-vs-self-recursive-message – Viktor

0

それがループではありませんので、より良い図では、ループの外に置きます。これは論理的視点と視覚的視点の両方から優れています。例えば、両方のアクションが同じトランザクション内にあるか、2つのビュー(例えば、1つのシーケンス図と1つのアクティビティ図)を使用することを示すために、縦線のより良いブロックを使用します。

1

ループをトリガーするセルフ・コールは、ループ・ブロックの外側で終了する必要があります。

ループが実行されるたびに、そのブロック全体が実行されなければなりません。たとえば、自己呼び出しがループブロック内で終了する場合、各ループ反復で、最初のイベントは自己呼び出しを受信する必要があります。これは間違いなくあなたがしたいことではありません。この自己呼び出しは一度だけ受信してからループを開始する必要があります。したがって、間違いなくループブロックの外側で終了する必要があります。