概觀
主動物件由通訊協定和通訊埠的封裝體組成。
封裝體是高度封裝的物件,透過其通訊埠物件,利用訊息方式與其他封裝體進行通訊。封裝體可聚集其他封裝體。封裝體結構可包含其他封裝體,它們是封裝體角色。
在兩個物件之間交換的訊息集符合一種叫作通訊協定的通訊型樣。基本上它是一個契約協定,定義可在通訊協定的參與者之間交換的有效訊息類型。
狀態圖是定義物件行為的方式之一。它顯示物件或互動在其生命期間內為了回應接收的訊息而經歷的狀態序列,以及其回應和動作。
工具步驟
若要在 Rational Rose RealTime 中使用主動物件來設計,請執行下列步驟:
-
建立封裝體角色
-
建立通訊埠和連結到通訊協定
-
定義封裝體狀態機
-
定義狀態和子狀態
-
定義狀態轉換
-
定義類別的屬性
封裝體建立在模型瀏覽器的邏輯觀點中。
-
在工具箱中選取封裝體角色工具。
-
將游標放在要放置封裝體角色的位置,然後按一下滑鼠左鍵。
-
從下拉清單選取新的封裝體角色相關聯的封裝體。
-
提供一個適當的名稱給封裝體角色。
-
對每一個要建立的封裝體角色重複上述步驟。
-
在模型瀏覽器中或類別圖上尋找封裝體。
-
在瀏覽器中,展開封裝體下的元素,或用滑鼠右鍵按一下類別圖中的封裝體,來開啟封裝體的結構圖。
-
使用工具箱中的通訊埠工具,將通訊埠放在封裝體的結構圖上。通訊埠可放到封裝體的邊框上或在大型矩形區域內。
-
設定通訊埠的名稱。
-
從清單中選取通訊協定,或建立新的通訊協定。
-
用滑鼠右鍵按一下通訊埠,來選取「通訊埠規格」對話框。
-
使用「通訊埠規格」對話框來變更通訊協定,選取有線或無線通訊埠,及設定通訊埠是否成對。
-
在模型瀏覽器中或類別圖上尋找封裝體。
-
在瀏覽器中,展開封裝體下的元素,或用滑鼠右鍵按一下類別圖中的封裝體,來開啟封裝體的狀態圖。
-
使用狀態圖工具箱,將狀態和轉換放到狀態圖上。
-
尋找要更新行為的封裝體。可在模型瀏覽器或類別圖上找到封裝體。
-
用滑鼠右鍵按一下封裝體來開啟狀態圖。這樣會在狀態圖編輯器中開啟該圖解。
-
使用工具箱中的狀態工具,將新狀態放在圖解上。對您要建立的每一個狀態執行此動作。
-
提供一個適當的名稱給每一個狀態。
-
按兩下會有子狀態的狀態。這樣會顯現新狀態圖,您可以在此處新增子狀態。
-
使用視窗底部的標籤,來選擇要導覽回到的狀態層次。
附註:另外,您可以透過狀態圖編輯器的導覽員區域新增狀態。
新增起始轉換
-
按一下圖解中的起始點,並在目標狀態上面拖曳轉換。起始點是出現在圖解左上角的黑色圈圈。
-
提供一個適當的名稱給轉換(如果不是預設值的話)。起始轉換的預設名稱是 Initial。 您可以選取標籤並輸入它,來變更名稱。建立封裝體實例時,在執行時期會自動呼叫起始轉換。一旦建立封裝體實例,就會執行與起始轉換相關聯的任何動作碼。
新增轉換
-
從工具箱選取轉換工具,並從來源狀態到目標狀態之間繪製轉換。
-
提供一個適當的名稱給轉換,或接受預設值。
將詳細程式碼新增至狀態機
C、C++ 或 Java
程式碼可新增成為轉換時的動作、選擇點和封裝體狀態圖上的狀態進入點或結束點,在執行時期加以執行。唯有新增至封裝體狀態圖的程式碼才併入至該模型產生的程式碼中。通訊協定或資料類別狀態圖上的詳細動作並不併入那些類別已產生的程式碼中。
新增觸發程式
在對轉換設定觸發程式之前,必須先定義要接收觸發程式的通訊埠。
-
按兩下轉換來開啟「轉換規格」對話框。
-
選取觸發程式標籤。
-
當游標位於通訊埠清單區時,按一下滑鼠右鍵來選取功能表中的插入。
-
在通訊埠區域中,選取要接收觸發程式的通訊埠。
-
在信號區域中,選取會引起觸發事件的通訊埠信號。
-
按一下確定按鈕來關閉已開啟的對話框。
新增程式碼至轉換中
現在所有必要的元素(起始狀態、起始轉換和通訊埠)都已經就位,您必須新增詳細程式碼至起始轉換,以及狀態到狀態的轉換。在模型執行期執行起始轉換時,或在狀態到狀態的轉換中接收到觸發程式時,會執行詳細程式碼。
-
按兩下轉換來開啟「轉換規格」對話框。
-
選取動作標籤來顯示程式碼視窗。
-
新增將轉換時執行的程式碼。
-
選取確定按鈕來關閉已開啟的對話框。
附註:您不必包含左右大括號 '{`, `}'。程式碼產生器會自動新增它們。
-
在瀏覽器中按兩下封裝體,或選取圖解中的封裝體,再選取蹦現功能表中的開啟規格,來開啟「封裝體規格」對話框。
-
在「封裝體規格」中選取屬性標籤。
-
當游標位於標籤的開放區域時,按一下滑鼠右鍵來選取插入。
-
將 NewAttribute1 這個名稱變成更有意義的名稱,然後按 Enter 鍵。
-
按兩下新屬性來顯示「屬性規格」對話框。
-
使用「屬性規格」對話框來設定屬性類型和起始值。
|