EA&UML日拱一卒--序列圖(Sequence Diagram)::消息簽名

實例說明

先看下面圖形編輯軟體中創建組合圖形的序列圖。

處理流程如下:

  1. 用戶在選擇組合目標圖形後點擊【Make group】菜單(非同步調用)

  2. Framework向:DrawerView發送菜單消息

  3. :DrawView收到消息後從m_shapeSelector取得包含選中圖形的selectedShape鏈表。

  4. :DrawView 以選中的selectedShape鏈表為參數調用data:DrawData的makeGroup方法,makeGroup方法將組合結果保存在 selectedShape中,並返回組合是否成功。而DrawView將是否成功保存在success變數中。

  5. :DrawViewer非同步調用:Framework的Update介面重畫圖形(以下省略)

消息簽名

我們以上述流程中的第4步為例來說明消息簽名的設定方法。

Message/Parameters/Return Value

這三項我們推薦點擊【Operation】按鈕進入對應的類中選擇或創建操作。手動輸入有兩個問題:一是不容易輸入正確;二是不能和類同步。這裡不推薦。

Argument(s)

此處填寫調用操作時的實參。

Assign To

輸入用於接受操作返回值的變數。如果這個變數是調用側的數據成員,就可以直接從下拉列表中選擇。

如果生命線沒有關聯類

因為某種原因(比如先畫時序圖)導致序列圖中的生命線沒有和類聯繫起來時,也不用著急,按照以下步驟後期指定即可:

  1. 選擇生命線

  2. 在上下文菜單中選擇【Advanced】-【Instance Classfier】啟動Select

    Classfier對話框

  3. 選擇對應的類

直接賦值的表現

序列圖中經常會遇到需要表達賦值操作的場景,比如在生命周期一文中出現的刪除圖形的時序圖。

一 種做法是:在【Return Value】中輸入null_ptr,同時在【Assign To】中輸入/選擇m_currentShape。但如果你足夠細心,你會注意到在null_ptr之前有一個冒號。它出現的原因是UML中消息簽名的格 式遵循如下定義(方括弧代表可選項):

[attribute]=name[(argument)][:return-value]

當return-value有內容時冒號也會同時表示。怎麼樣,你能接(忍)受么?

還有另外一種方式,在簽名對話框中的Message項目中輸入null_ptr,對於後面伴隨出現的括弧,可以通過以下的步驟解決:

  1. 在序列圖空白處雙擊滑鼠或右鍵調出上下文菜單後選擇【Property】項目

  2. 選擇【Features】屬性頁

  3. 選中下圖中紅框中【Suppress Brackets for Operations without Parameter】選項

這樣,就可以得到下面的結果,我們大一點表示。

真正的用途

其實這個設定的真正目的當消息就是表達某種信息而不是操作時,可以用來抑制消息名後面的小括弧表示。

如果回頭看看本文開頭序列圖第一步的表示,用戶選擇【Make Group】的操作並不是Framework的函數調用,沒有後面的小括弧會自然很多。

對於那些沒有參數的操作,我們可以在【Arguments】文本框中輸入void,這時小括弧就又可以表示出來了。這種程度的代價應該是可以接受的。

【面向對象思考】推薦使用這種設定方法。

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

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


推薦閱讀:

EA&UML日拱一卒--序列圖(Sequence Diagram)::並行和臨界區
(翻譯)14.1 Summary
活動圖::Structural Feature Actions(續)
OOD 高頻面試題 | 如何設計一個ATM
活動圖::SendSignalAction

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