2013-02-11 6 views
10

Ich versuche ein UML-Sequenzdiagramm für einen bestimmten Prozess in unserer Anwendung zu erstellen.So stellen Sie Aufrufe innerhalb derselben Klasse mithilfe des UML-Sequenzdiagramms dar

Das Problem ist, dass die meisten Business-Logik in einer Klasse ist und wenn ich versuche, es in Sequenzdiagrammen zuordnen, bekomme ich mehrere Aufrufe an die gleichen Objekte im Sequenzdiagramm.

Was ich brauche, ist eine Darstellung ähnlich einem Stacktrace im UML-Sequenzdiagramm. Ist es möglich, ein Sequenzdiagramm zu verwenden oder ist ein anderes Diagramm eine bessere Möglichkeit, Aufrufe innerhalb derselben Klasse darzustellen? Bitte beraten.

Antwort

11

Einige Vorschläge:

  1. Sie aufeinander folgende Methoden in einem Sequenzdiagramm Anruf mit selbst zeigen können. Ein Beispiel finden Sie in Abbildung 1 here (Selbstaufrufe sind die zirkulären Aufrufe auf der gleichen Lebenslinie).
  2. Als Alternative könnten Sie eine Activity Diagram betrachten. Möglicherweise besser geeignet, die Reihenfolge der Methoden zu veranschaulichen.
  3. Refactor den Code. Viel Logik in einer einzelnen Klasse ist normalerweise ein schlechter Geruch. Vorausgesetzt, Sie haben den Umfang, könnte Refactoring eine gute Idee sein.

hth.

+0

+1. Richtig, "Aktivitätsdiagramm" ist besser für Methoden im selben Objekt. – umlcat

5

Darstellen eines Selbstaufrufs in einem UML-Sequenzdiagramm (siehe Schritt 7).

self-call on a UML sequence diagram

Wenn die aufgerufene Methode ist (oder sollte sein) private, dann kann er sicher von der Sequenzdiagramm als ein Implementierungsdetail ausgeschlossen werden.

Allerdings rieche ich die God-Class Anti-Muster; Ihre Klasse hat mehrere Verantwortlichkeiten und sollte dekonstruiert werden. Zerlegen Sie die Klasse so, dass nur eine single responsibility Delegierung verwendet wird. Diese Methodenaufrufe wären ein guter Ausgangspunkt.

1

es tatsächlich möglich ist, auf die Selbst Instanz

In der Tat UML-Spezifikation 2.5B1 Seite 607, beziehen über eine Rettungsleine gesagt: Wenn der Name das Schlüsselwort selbst ist, dann stellt das Lifeline ist die Aufgabe der Klassifikator, der die Interaktion enthält, die die Lifeline besitzt. Ports des Enklausers können separat angezeigt werden, auch wenn das self enthalten ist.

Siehe http://lowcoupling.com/post/47844944042/uml-sequence-diagrams für ein komplettes Beispiel

+0

Link ist unterbrochen. – javaPlease42

Verwandte Themen