作者hanshen (呵呵呵呵呵呵)
看板CSSE
標題[請益] UML 2.0的activity diagram 畫迴圈
時間Fri Jan 9 01:12:07 2009
小弟昨天下午有問過, 後來以為會了, 就刪了文.
剛才看了一個朋友說的, 決定還是來問一下....
pseudo code 是:
action1;
while (i > 0)
{
action2;
}
------------------------
-----------> end state
|
╭────╮ | ╭────╮
| Action1| ----->◇---> | Action2|
╰────╯ ^ ╰────╯
| |
|---------- |
-------------------------------------------------
------------------------->◇---->end state
| ^
╭────╮ | ╭────╮ |
| Action1| -----> ◇--> | Action2| --->◇--
╰────╯ ╰────╯ |
^ |
|------------
--------------------------------------------------
上圖是我覺得應該可以的, UML 1.x 也是如此畫;
現在看到教 UML 2.0 的書上說 branch 之後要 merge,
為了避免畫出數支branch同時指到下一個 action 的情形
(代表 該 action 要等到所有branch都執行到才會執行)
第二個畫法是有人建議的, 人家說, 最左邊的 decision 配最右邊的 merge,
接在action2 之後的方塊就作迴圈的判斷.
這個說法是否正確呢?
如果 decision 一定要配合 merge, 為何那迴圈用的 decision 後面不用 merge?
另外, Action 2 被兩個箭頭指到, 是否要等到兩邊都有info傳入才會繼續執行?
不知有沒有前輩先進能幫小弟解惑? 先謝謝了.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.49.24
1F:→ hanshen:以及是否有規定, 方塊圖示一定只能一進多出(decision), 01/09 09:19
2F:→ hanshen:或是 多進一出 (merge), 像第一圖 二進二出 已不被允許? 01/09 09:19
3F:推 tinlans:兩個畫法都不行,action 的 input 都要到才會做。 01/22 22:49
4F:推 tinlans:上面打錯,是第二個不行;另外二進二出的 decision 是可以 01/22 22:52
5F:→ tinlans:的,UML 2.1.2 Superstructure Sepc 就有那種範例。 01/22 22:52
6F:→ hanshen:謝謝. 01/28 00:31