JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Software Design  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
己加入精華區
by koji at 2007-01-24 09:20
本主題所含的標籤
無標籤
作者 利用 IBM RSA 實現 CoR 的塑模與產出程式碼 [精華]
kenming





發文: 194
積分: 10
於 2007-01-24 07:29 user profilesend a private message to usersend email to kenmingreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
使用環境

 o IBM RSA(Rational Software Architect 6.0) Trial UML 工具
 o JDK 1.5

新增 UML 空白專案
首先開啟 Rational Software Architect(使用版本為 6.0),並切換 workspaces 至 \workspaces\GoFPatterns。

1. 在工作區中,選擇File > New > Project > Other。
2. 選擇 UML Project 並選擇 Next。
3. 輸入 CoRProject 作為專案名稱,並選擇 Next。
4. 選擇範本為 “空白模型(Blank Model)”,檔名輸入為 CoRModel,然後在預設選項中勾選 在新模型中建立預設圖形,預設圖形選擇 開放式圖形(Freeform Diagram),選擇 Finish 完成。



圖1、新增 UML 空白專案


5. 在 “模型瀏覽器(Model Explorer)” 視圖中,可以看到一個新增的 UML 空白專案。



圖2、Model Explorer 所顯示的空白 UML 專案


型樣瀏覽器(Pattern Explorer)

1. 在 Windows Menu 中,選擇 顯示視圖 > Pattern Explorer (若沒有出現,則從 Other… 中選取。
2. 在 Pattern Explorer 視圖中,展開 Design Patterns > Behavioral。
3. 選擇 Chain of Responsibility Pattern。
4. 要瞭解 Design Pattern 的結構圖與說明,在 Pattern Explore 視圖底部的 總覽 與 簡要說明 選項之間切換瀏覽。



圖3、Pattern Explorer 中所顯示的 CoR Pattern


5. 在 Pattern Explore 視圖中,將 CoR 拖曳到 Design Pattern 的空白編輯器中。
6. 編輯器中會出現下圖的 CoR Pattern 的個體(instance)。



圖4、CoR Pattern 的個體(instance)


使用 CoR 設計樣式

為完成範例中實做,我們需要實現下表中會使用到的類別,並列出主要的屬性與操作名稱。

類別, 屬性, 操作, 說明
---------------------------------------------------------------------------------
TroubleHandler (處理麻煩(trouble)的抽象類別。)
-successor: TroubleHandler
+setSuccessor(TroubleHandler): void
+handleTrouble(Trouble): void

TroubleMaker (麻煩製造者(代表 Client 端))
-name: String
-getName(): String

Trouble (發生麻煩時的類別,被當作參數,由 TroubleMaker 傳送至 TroubleHandler。)
-grade: String
+getGrade(): String

SmallTrouble_Handler (處理「小麻煩」的具體(concrete)類別。)
+handleTrouble(Trouble): void

MediumTrouble_Handler (處理「中麻煩」的具體(concrete)類別。)
+handleTrouble(Trouble): void

BigTrouble_Handler (處理「大麻煩」的具體(concrete)類別。)
+handleTrouble(Trouble): void

NullTrouble_Handler (沒有任有處理(視而不見)的具體(concrete)類別。)
+handleTrouble(Trouble): void
---------------------------------------------------------------------------------

1. 在編輯器右側的 選用區(Palette) 中,點擊 Class Diagram 部分。
2. 選擇 類別(Class) 並在編輯器中任意單擊,參考下圖 5 ,新增五個類別:”TroubleHandler”、”SmallTroubleHandler”、 ”MediumTroubleHandler”、 ”BigTroubleHandler”、 ”NullTroubleHandler”。
3. 參考下圖 5 ,新增 “TroubleHandler” 類別的操作(operations): handleTrouble()。
4. 將 “TroubleHandler” 拖曳到 CoR 個體中的 “Handler”,並同時將其操作(operations)拖曳到 “HandleRequest”。
5. 將 ”SmallTroubleHandler”、 ”MediumTroubleHandler”、 ”BigTroubleHandler”、 ”NullTroubleHandler” 拖曳到 CoR 個體中的 “ConcreteHandler”。
6. 在 CoR 個體的內容中顯示如下圖 5 。



圖 5、Composite Pattern 的個體(instance)內容


7. 為了觀察 Developer 所新增的類別與 CoR Pattern 個體之間的關係,在編輯器中任一位置,右鍵選擇浮動功能表中的 過濾(Filter) > 顯示/隱藏關係 ,勾選列出所有的關係。
8. 參考下圖,可以看到該設計樣式中的所有元素與其關係。



圖 6、CoR 設計樣式中的所有元素與其關係


將模型(Model)轉換(Transform)為 Java 程式碼

1. 在Model Explorer 中,展開 CoRProject。
2. 同時點選Developer 所新增上述的五個類別。
3. 右鍵單擊任一個所選擇的類別,並選擇 轉換(Transform) > 執行轉換 > UML至Java。



圖 7、執行轉換(Transform)至 Java 程式碼


4. 在 執行轉換 視窗中,選擇 Target 標籤,單擊 建立新目標儲存器(Create new Target Container)。
5. 輸入新增的專案名稱為 CoRTransformedJava,其餘相關設定參考下圖。



圖 8、新增 Java 專案


6. 執行轉換作業,此時 RSA 將模型轉換為 Java 程式碼,雙擊已轉換的 Java 檔名,可以查看已轉換的程式碼(將視圖切換至套件瀏覽器(package explorer)),參考如下圖。



圖 9、從模型轉換至 Java 的程式碼


7. 轉換之後,不可避免會有一些錯誤發生,例如型別(Type)、該被匯入(import)的參考類別、回傳值 ...等。修正錯誤並補充細節,填上該實做每一個 method 的演算邏輯。修正之後的 Java 程式碼可以正確完成編譯(compile)。
8. 新增原來在 CoR Pattern 所沒有的類別,包括 Trouble, TroubleMaker,以及新增一個測試類別: CoRAppMain,可以在 Console 下顯示測試結果。該測試類別首先利用亂數模擬產生從 “小、中、大” 與 “NULL” 的各類麻煩,然後新增四個麻煩處理者,專責來處理名為 “敗家子” 的 TroubleMaker 所製造的麻煩,並且將其四個處理者串鍊(chain)在一起,分門別類來處理各類的麻煩。



圖 10、修正 Java 程式碼、補上實做細節、完成編譯並執行


反轉(Reverse) Java 程式碼至 RSA 的 Model
1. 將視圖切換回模型瀏覽器(Model explorer)。
2. 展開 CoRProject,在 CoRModel 套件(package)內滑鼠按右鍵新增一個類別圖,名稱為 ReversedJava。
3. 將 CoRTransformedJava 專案 src 套件內所有的 Java 程式,全部拖曳至上述所新增的類別圖畫布內。
4. 從 Java 程式碼反轉至 EA Model 的類別圖如下圖所示。



圖 11、從Java程式碼反轉回 RSA 的 Model


※ 延伸參考
 o 關於 RSA Model 與 Java 原始程式碼,請至「HSDc—檔案下載區」下載。
  http://www.hsdc.com.tw/modules/wfdownloads
 o 【設計樣式】「Chain of Responsibility」的範例與說明
  http://www.kenming.idv.tw/index.php?title=a_euseu_aupaf_a_a_chain_of_responsibilit&more=1&c=1&tb=1&pb=1


reply to postreply to post
=$∼寸心千里∼$=
= blog: http://www.kenming.idv.tw/
= 軟體課程訊息 http://www.hsdc.com.tw/
話題樹型展開
人氣 標題 作者 字數 發文時間
5239 [精華] 利用 IBM RSA 實現 CoR 的塑模與產出程式碼 kenming 5070 2007-01-24 07:29
» JWorld@TW »  Software Design

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8