ReadSelfAction和ReadStructuralFeatureAction
上一篇文章中介紹了AcceptCallAction和ReplyAction兩個動作。今天介紹另外兩個動作:ReadSelfAction和ReadStructualFeatureAction。
首先介紹《GB/T 28174.2-2011 統一建模語言(UML) 第2部分:上層結構》中對這兩個動作的描述。為了更容易理解,內容稍作修改。
讀自身動作(ReadSelfAction)
ReadSelfAction 是一個動作,該動作讀取動作的宿主對象。每個動作最終都是某個行為的一部分。行為按照一個類目的規範,以某種方式被附屬到一個方法的實體上,當行為執行 時,該動作在類目的某一個指定的宿主對象的語境中起作用。ReadSelfAction取得這個宿主對象,將它放到輸出引腳上。
讀結構性特徵動作(ReadStructuralFeatureAction)
ReadStructuralFeatureAction是一個獲取結性特徵值的動作。
它有一個輸入引腳,用於指定輸入對象。當輸入對象被指定以後,該對象的結構性特性的值被放置在動作的輸出引腳上。輸出引腳的類型,有序性,多重性都應與結構性特徵相適合。
示例
繼續使用解一元二次方程的例子。首先看類圖。
CalculateCoordinator 管理著Calculator和CalculatorPanel的實例,在calculateMain方法中首先調用CalculatorPanel的 getInput方法取得一元二次方程的a,b,c三個係數,然後調用Calculator的solveEquation方法解方程。今天首先索命取得 calculator對象和panel對象的方法。
準備工作
1. 創建名稱為CalculateCoordinator::calcuateMain的活動圖
2. 增加初始節點
3. 增加AcceptCallAction並指定Trigger為CalcuateCoordinator.calculateMain。具體步驟請參照上一篇文章。
增加ReadSelfAction,ReadStructuralFeatureAction
從工具欄拖動Action圖標到流程圖,選擇Action類型為ReadSelf
指定Action名稱為coordinator
右鍵打開ReadSelfAction的上下菜單並選擇【Structural Elements】,在出現的對話框中選擇result引腳後調整位置
用控制流連接AcceptCallAction和ReadSelfAction
從工具欄拖動Action圖標到流程圖,選擇Action類型為ReadStructuralFeature
指定Action名稱為CalculateCoordinator
修改名稱為result的輸出引腳,指定名稱為calculator,選擇類型為Calculator
增加一個名稱為panel,類型為CalculatorPanel的輸出引腳。
右鍵打開ReadStructuralFeatureAction的上下菜單並選擇【Structural Elements】,在出現的對話框中選擇表示所有引腳後調整位置。
連接ReadSelfAction的輸出引腳到ReadStructuralAction的輸入引腳object.
解說
ReadSelfAction 是一個動作,該動作讀取CalculateCoordinator::calculateMain的宿主對象。當行為執行時,該動作在 CalculateCoordinator類的某一個宿主對象的語境中起作用。ReadSelfAction取得這個宿主對象,將它放到輸出引腳上。看懂 沒?ReadSelfAction的功能相當於C++中的this指針!
本例中 ReadStructuralFeatureAction的輸入引腳指定了ReadSelfAction取得的CalculateCoordinator 的一個實例,這時該對象的結構性特性的值calculator:Calculator和panel:CalculateorPanel被放置在該動作的輸 出引腳上。輸出引腳的類型,有序性,多重性都應與結構性特徵相適合。還是以C++舉例,ReadStructuralFeatureAction的功能其實就是輸入對象,輸出對象的數據成員!
下一篇文章介紹使用得到的calculator和panel實例調用其功能的的表達方法。
以上就是今天的文章,拜託點贊並推薦給您的朋友!
閱讀更多更新文章,請關注【面向對象思考】微信公眾號!
推薦閱讀:
※活動圖::SendSignalAction
※OOD 高頻面試題 | 如何設計一個ATM
※(翻譯)14.1 Summary
※活動圖::Structural Feature Actions(續)