EA&UML日拱一卒--序列圖(Sequence Diagram)::消息簽名
實例說明
先看下面圖形編輯軟體中創建組合圖形的序列圖。
處理流程如下:
用戶在選擇組合目標圖形後點擊【Make group】菜單(非同步調用)
Framework向:DrawerView發送菜單消息
:DrawView收到消息後從m_shapeSelector取得包含選中圖形的selectedShape鏈表。
:DrawView 以選中的selectedShape鏈表為參數調用data:DrawData的makeGroup方法,makeGroup方法將組合結果保存在 selectedShape中,並返回組合是否成功。而DrawView將是否成功保存在success變數中。
:DrawViewer非同步調用:Framework的Update介面重畫圖形(以下省略)
消息簽名
我們以上述流程中的第4步為例來說明消息簽名的設定方法。
Message/Parameters/Return Value
這三項我們推薦點擊【Operation】按鈕進入對應的類中選擇或創建操作。手動輸入有兩個問題:一是不容易輸入正確;二是不能和類同步。這裡不推薦。
Argument(s)
此處填寫調用操作時的實參。
Assign To
輸入用於接受操作返回值的變數。如果這個變數是調用側的數據成員,就可以直接從下拉列表中選擇。
如果生命線沒有關聯類
因為某種原因(比如先畫時序圖)導致序列圖中的生命線沒有和類聯繫起來時,也不用著急,按照以下步驟後期指定即可:
選擇生命線
在上下文菜單中選擇【Advanced】-【Instance Classfier】啟動Select
Classfier對話框選擇對應的類
直接賦值的表現
序列圖中經常會遇到需要表達賦值操作的場景,比如在生命周期一文中出現的刪除圖形的時序圖。
一 種做法是:在【Return Value】中輸入null_ptr,同時在【Assign To】中輸入/選擇m_currentShape。但如果你足夠細心,你會注意到在null_ptr之前有一個冒號。它出現的原因是UML中消息簽名的格 式遵循如下定義(方括弧代表可選項):
[attribute]=name[(argument)][:return-value]
當return-value有內容時冒號也會同時表示。怎麼樣,你能接(忍)受么?
還有另外一種方式,在簽名對話框中的Message項目中輸入null_ptr,對於後面伴隨出現的括弧,可以通過以下的步驟解決:
在序列圖空白處雙擊滑鼠或右鍵調出上下文菜單後選擇【Property】項目
選擇【Features】屬性頁
選中下圖中紅框中【Suppress Brackets for Operations without Parameter】選項
這樣,就可以得到下面的結果,我們大一點表示。
真正的用途
其實這個設定的真正目的當消息就是表達某種信息而不是操作時,可以用來抑制消息名後面的小括弧表示。
如果回頭看看本文開頭序列圖第一步的表示,用戶選擇【Make Group】的操作並不是Framework的函數調用,沒有後面的小括弧會自然很多。
對於那些沒有參數的操作,我們可以在【Arguments】文本框中輸入void,這時小括弧就又可以表示出來了。這種程度的代價應該是可以接受的。
【面向對象思考】推薦使用這種設定方法。
以上就是今天的文章,如果它能給您帶來些許收穫,歡迎點贊並推薦給朋友!
閱讀更多更新文章,請關注【面向對象思考】微信公眾號!
推薦閱讀:
※EA&UML日拱一卒--序列圖(Sequence Diagram)::並行和臨界區
※(翻譯)14.1 Summary
※活動圖::Structural Feature Actions(續)
※OOD 高頻面試題 | 如何設計一個ATM
※活動圖::SendSignalAction