EA&UML日拱一卒--序列圖(Sequence Diagram)::條件執行

EA&UML日拱一卒--序列圖(Sequence Diagram)::條件執行

來自專欄 EA&UML日拱一卒

序列圖提供了一種Fragment(片段),用來表現條件執行,循環,並發等情況。具體使用哪種Fragment,通過以下的對話框來選擇。

今天先說條件執行相關的Fragment。

alt(alternative)

alt用於表現條件執行的程序構造。和alt對應的程序結構可以是if/else結構,也可以是swtich結構。還是從圖形編輯軟體中找例子。

這個時序圖描述的是DrawerView根據用戶按下的方向鍵來移動圖形時的處理。使用的就是名為alt的Framgment。它的設定畫面如下:

設定內容

Type:alt

Name:ArrowKeyHandling。選取一個有意義的名字有助於讀者的理解。

Condition:輸入每個分支的判斷條件。輸入完成的條件可以在Condition輸入框下方的列表中表示出來。

需要說明的是,這個對話框中不能調整條件的順序。條件的順序是通過例子圖中紅線框出的小箭頭來調整的。

opt(optional)

當然,在實際的程序中,只有某個圖形被選中時才可以移動該圖形。這就是opt出場的時候了,具體時序圖如下:

只有在m_currentShape有效時才調用移動圖形方法並更新表示。opt其實就是一個沒有else的if。

break

首先要明確的是,這個break不是C/C++語言中的那個break,它包含一個帶有監護條件的操作片段,如果監護條件為真,則該片段被執行,該片段以後的部分被忽略;如果監護條件為假,那麼該片段不會被執行,該子片段以後的部分則會被執行。

好像有點複雜,結合下面代碼一起說就容易理解了。

void openfile(void)

{

CFileDialog dlg;

if(dlg.DoModal()!=IDOK)

{

MessageBox.setMessage("Cant open file!");

return;

}

CString FilePathName = dlg.GetPathName();

/*此處省略50行。*/

}

代碼很簡單,畫成序列圖如下:

上圖中包含一個以result是否不等於IDOK為監護條件的break片段,如果監護條件為真,則該片段中的sendMesage和刪除dlg操作被執行,GetPathName及以後的部分被忽略;如果監護條件為假,那麼break片段不會被執行,GetPathName及以後的部分會被執行。

費了半天勁,break其實就是一個有條件的中途退出處理。

以上就是今天的文章,如果它能給您帶來些許收穫,歡迎點贊並推薦給朋友!

閱讀更多更新文章,請關注【面向對象思考】微信公眾號!


推薦閱讀:

Python基礎練習題(老王開槍)
大話設計模式之簡單工廠模式與策略模式
EA&UML日拱一卒--活動圖::數據區
EA&UML日拱一卒--活動圖::活動(續)

TAG:面向對象編程 | 面向對象分析與設計 | UML建模 |