7

UML シーケンス図では、メソッドは 1 つの戻り行しか持つことができません (少なくとも astah では、1 つのメソッドから 2 つの戻り行を描画することはできません)。if-else ブロックで複数の戻り値をモデル化するにはどうすればよいですか?

以下の例では、戻り行 'a' で methodX() が終了していますが、戻り行 'b' を描画するにはどうすればよいですか?

String methodX(int i) {
  if (i>0)
    return 'a';
  else
    return 'b';
}

     +------------+            +------------+
     |    Foo     |            |     Bar    |
     +-----+------+            +------+-----+
           |                          |
           |        methodX(i)         |
          +-+----------------------->+-+
          | |                        | |
  +-----+------------------------------------+
  | alt | | |  [i>0]                 | |     |
  +-----+ | |           a            | |     |
  |       | |<- - - - - - - - - - - -+-+     |
  |       | |                         |      |
  |       | |                         |      |
  +------------------------------------------+
  |       | |  [else]                 |      |
  |       | |                         |      |
  |       | |           b             |      |
  |       | |<- - - - - - - - - - - - | ??   |
  |       | |                         |      |
  |       | |                         |      |
  +------------------------------------------+
          | |                         |
          +-+                         |
           +                          +
4

2 に答える 2

2

問題は UML ではなく、ツールにあります。UML のビジュアル パラダイムを確認してください。各フラグメントの開始時にアクティベーションを手動で追加し、altアクティベーションの最後に返信メッセージを送信できます。

于 2012-06-13T13:14:44.033 に答える
1

簡単な観察:

(1)クラス/オブジェクトがそれ自体にメッセージを送信する可能性があることを忘れないでください(「DoSomething」)。これにより、「代替」を理解するのがより困難になります。

(2)「alt」を使用する場合は、条件を記載する必要があります。「alt」は、「if-then-else」、「switch-case」、およびプログラミング言語の同様の概念を表します。

そして、それらの文には条件があり、UML図に追加する必要があります( "[条件]")。

(3)「alt」の各条件またはケース内に、複数のオブジェクト間、またはそれら自体への複数のメッセージがある場合と、まったくない場合があります(「戻る」矢印のみ)。

..........................................................
.......+---------+..............+---------+...............
.......|   Foo   |..............|   Bar   |...............
.......+----+----+..............+----+----+...............
............|........................|....................
..........+-+-+....................+-+-+..................
..........|   |......methodX().....|   |..................
..........|   +------------------->+   |..................
..........|   |....................|   |..DoSomething()...
..........|   |....................|   +---+..............
..........|   |....................|   |...|..............
..........|   |....................|   |...|..............
..........|   |....................|   |...|..............
..........|   |....................|   |<--+..............
..........|   |....................|   |..................
..+-----+-------------------------------------+...........
..|.alt.|.|   |....................|   |......|...........
..+-----+-------------------------------------+...........
..|.[option=1].....................|   |......|...........
..|.......|   |....................|   |......|...........
..|.......|   |....................|   +---+..|...........
..|.......|   |....................|   |...|..|...........
..|.......|   |....................|   |...|..|...........
..|.......|   |....................|   |...|..|...........
..|.......|   |....................|   |<--+..|...........
..|.......|   |<-------------------+   |......|...........
..|.......|   |....................|   |......|...........
..+-----+-------------------------------------+...........
..|.[option=2].....................|   |......|...........
..|.......|   |....................|   |......|...........
..|.......|   |....................|   |......|..// The wide bar its kept,
..|.......|   |<-------------------+   |......|..// even if there is a
..|.......|   |....................|   |......|..// previous return arrow
..+-------------------------------------------+...........
..|.[else]|...|....................|   |......|...........
..|.......|   |....................|   |......|...........
..|.......|   |....................|   |......|...........
..|.......|   |<-------------------+   |......|...........
..|.......|   |....................|   |......|...........
..+-------------------------------------------+...........
..........|   |....................|   |..................
..........+-+-+....................+-+-+..................
............|........................|....................
............|........................|....................
............X........................X....................
..........................................................

乾杯。

PD猫用のチーズバーガーまたはマグロフィッシュバーガーはありますか?

于 2012-06-12T18:23:01.450 に答える