EA&UML日拱一卒--活動圖::活動(續)
上一篇文章中我們以解一元二次方程為例說明了活動動作的機制。今天繼續這個話題,說明EA中定義活動,使用活動的方法。
定義活動
定義活動有兩種方式,直接定義和定義結構化活動。我們繼續以定義一元二次方程為例說明定義活動,使用活動的方法。
直接定義
直接定義按照以下步驟進行:
拖動活動圖工具條中如下Activity圖標到活動圖畫面中。
打開活動的上下文菜單選擇【New Child Element】-【Activity Parameter】項目增加活動參數並設定其屬性。
在活動的圓角矩形框內直接設計活動的內部邏輯。
根據需要調整活動矩形框的大小,設定各個元素的屬性。
這種方法的例子就是上一篇文章中的SolveEquation活動。
定義複合結構圖
1. 拖動活動圖工具條中如下Activity圖標到活動圖畫面中。
2. 打開活動的上下文菜單選擇【New Child Element】-【Activity Parameter】項目增加活動參數並設定其屬性。
3. 打開活動的上下文菜單選擇【New Child Diagram】-【Composite Structure Diagram】創建複合結構圖。這時該活動表示如下:
4. 可以看到圓角矩形的右下角增加了一個【?】符號。這表明該活動包含一個複合結構圖。
5. 雙擊活動打開內部的複合結構圖。
6. 設計活動的內部邏輯。
7. 使用ReadVariable動作讀取輸入參數的值,使用AddVariable動作寫入輸入參數的值。
所有的操縱結束以後,我們得到以下的複合結構圖。
使用活動
直接使用
直接定義活動以後,可以像輸入輸出管腳一樣在參數節點上連接控制流,對象流。這就是上一篇文章中的場景。
調用活動
無論哪種方式定義的活動,在EA的ProjectBrowser中的表示都是一樣的。
上圖中紅框中的是直接定義的活動,藍框中的是複合結構圖方式定義的活動。二者不光表示方式相同,調用方式也相同:
1. 將對應節點拖動到調用側的活動圖中。
2. 在出現的【Paste Activity】中,進行基本的設定。
Drop as:選擇Invacation(Action)。
Name:輸入調用的名稱,此處相當於別名。
Structual:共有三個選項
Select:EA會接著顯示如下【Strutual Element】對話框,可以從裡面選出想要的管腳。
None:不複製輸入/輸出管腳。
All:複製全部的輸入/輸出管腳。
上述操作完成後,可以得到下面的活動調用操作。注意紅圈中的圖形。
兩種定義方式生成的活動被調時的表示都是一樣的,但是雙擊複合調用活動符號時,定義複合結構圖的活動會表示下一層次的活動圖。而直接定義的活動只會顯示屬性對話框。
差不多十年之前,第一次帶一個規模比較大,嚴格按照開發流程進行的項目時,就用到了流程圖,那時候給大家講動作和活動的區別時是這樣說的:
如果表現的是函數(含操作,方法)調用,就用活動,如果是簡單的處理就用動作。
今天從UML活動圖的觀點看來,這並不是一個準確的說法。
函數調用在活動圖中是動作,不是活動,函數定義那部分才是。
以上就是今天的文章,如果它能給您帶來些許收穫,歡迎點贊並推薦給您的朋友!
閱讀更多更新文章,請關注【面向對象思考】微信公眾號!
推薦閱讀:
※Python實用技巧——類,屬性與裝飾器
※EA&UML日拱一卒--活動圖::對象流
※EA&UML日拱一卒--活動圖::活動分區
※大話設計模式之簡單工廠模式與策略模式