web-dev-qa-db-ja.com

UMLシーケンス図を使用して同じクラス内の呼び出しを表す方法

アプリケーションの特定のプロセスのUMLシーケンス図を作成しようとしています。

問題は、ビジネスロジックのほとんどが1つのクラスにあり、それをシーケンス図でマップしようとすると、シーケンス図の同じオブジェクトへの複数の呼び出しが発生することです。

必要なのは、UMLシーケンス図のスタックトレースに似た表現です。シーケンス図を使用することは可能ですか、それとも他の図は、同じクラス内の呼び出しを表現するためのより良い方法ですか?お知らせ下さい。

15
Ashay Batwal

いくつかの提案:

  1. 自己呼び出しを使用して、シーケンス図に連続するメソッドを表示できます。例については、図1 ここ を参照してください(自己呼び出しは、同じライフラインでの循環呼び出しです)。
  2. 別の方法として、 アクティビティ図 を検討することもできます。メソッドの順序を示すのに適している可能性があります。
  3. コードをリファクタリングします。通常、単一のクラスに多くのロジックがあると、悪臭がします。あなたがスコープを持っていると仮定すると、リファクタリングは良い考えかもしれません。

hth。

12
sfinnie

UMLシーケンス図での自己呼び出しの表現(ステップ7を参照)。

self-call on a UML sequence diagram

呼び出されたメソッドがプライベートである(またはプライベートである必要がある)場合、実装の詳細としてシーケンス図から安全に除外できます。

しかし、私は God-Class 反パターンのにおいがします。クラスには複数の責任があり、分解する必要があります。クラスを分解して、委任を使用して 単一の責任 のみを指定します。これらのメソッド呼び出しは、出発点として適しています。

7
Martin Spamer

実際には、セルフインスタンスを参照することが可能です

実際、UML仕様2.5b1 607ページのライフラインについて次のように述べられています。名前がキーワードselfの場合、ライフラインは、ライフラインを所有する相互作用を囲む分類子のオブジェクトを表します。自己が含まれている場合でも、エンクロージャーのポートが個別に表示されることがあります。

完全な例については、 https://web.archive.org/web/20131101211441/http://lowcoupling.com/post/47844944042/uml-sequence-diagrams を参照してください

1
Andrea Sindico