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日拱一卒--活動圖::活動(續)