UML 2.0 至 Java 轉換


「UML 至 Java 轉換」是將 UML 2.0 規格轉換成 Java 類別。您可以使用這項轉換, 從 UML 2.0 規格植入一個 Java 專案。您也可以在起始的植入後才套用轉換, 以便讓更新後的 UML 模型和現有的 Java 程式碼相合併。
 

1. 開始使用

在您使用「UML 2.0 至 Java 轉換」前,您應已熟悉如何建立與編輯 UML 2.0 模型與 Java 專案。

下列程序顯示最簡單的 Java 轉換用法。

如果要將 UML 模型轉換成 Java,請執行下列動作:
1. 切換至「建模」視景。
2. 在「模型瀏覽器」視圖中,用滑鼠右鍵按一下某個 UML 類別(如 Class1)。
3. 按一下轉換 > 執行轉換 > UML2 至 Java
4. 會開啟執行轉換對話框。按一下建立目標儲存器按鈕。
5. 會開啟新 Java 專案對話框。在專案名稱欄位中輸入 simple, 並按一下完成
6. 在執行轉換對話框中,按一下完成

新 Java 專案含有一個預設套件,內含新 Java 類別 Class1。

轉換也可以執行其他一些更複雜的功能, 像是置換名稱而不修改來源模型,以視覺化取代 UML 物件, 將 UML 模型中的變更和 Java 來源合併,以及驗證 UML 模型看看是否有潛在的轉換問題。
 

2. 轉換的詳細資料

2.1 轉換來源

您可以選擇 UML 2.0 模型、套件、非巢狀類別以及非巢狀介面, 以作為轉換的來源。如果您選擇以其他項目作為來源,轉換仍會繼續進行, 只不過它不會轉換這些項目。在轉換特性轉換模型、套件、類別或介面期間, 它也會轉換這些物件所含的所有項目。舉例來說,在轉換特性轉換類別時, 它也會轉換該類別中的所有作業與內容。
 

2.2 轉換目標

您可以選擇任何 Java 專案(至少有一個來源資料夾),以作為轉換的目標。
 

2.3 UML 來源物件的解譯

UML Java 
套件 同名*的 Java 套件
已建立 <<perspective>> 造型的套件 已忽略
具有關鍵字 <<Analysis>> 或 <<analysis>> 的套件 已忽略
類別 同名*且具可見性的 Java 類別
(類別)isLeaf  內容 若為 true,則 Java 類別為 "final"
(類別)isAbstract 內容 若為 true,則 Java 類別為 "abstract"
(類別)一般化 Java 類別是指定 Super 類別的 "延伸"
實作 Java 類別會 "實作" 指定的介面
介面 同名*且具可見性的 Java 介面 
(介面)一般化 Java 類別是指定介面的 "延伸"
作業 同名*且具可見性的 Java 方法
(作業)isStatic 內容 若為 true,則 Java 方法為 "static"
(作業)isAbstract 內容 若為 true,則 Java 方法為 "abstract"
(作業)isLeaf 內容 若為 true,則 Java 方法為 "final"
(作業)和其類別同名 Java 建構子
(作業)ation) 造型 <<create>> Java 建構子
參數 同名*的 Java 參數
(參數)「類型」內容 Java 參數採用指定的類型,可以是另一個類別或初始類型
(參數)「方向」內容 如果設為 "return",則 Java 方法具有 "return <param type>"; 否則,則新增 "<param type> <param name>" 至方法簽章中
(參數)「對應關係」內容  請見下表,其中含有對應關係的相關資訊
內容  同名*且具可見性的 Java 欄位
(內容)isStatic 內容 若為 true,則 Java 欄位為 "static"
(內容)isLeaf 內容 若為 true,則 Java 欄位為 "final"
(內容)「類型」內容 Java 欄位採用指定的類型,可以是另一個類別或初始類型
(內容)「對應關係」內容  請見下表,其中含有對應關係的相關資訊

*  有些字元(例如空格)在 Java ID 中為無效的。Java 轉換會自動將無效字元換成 底線 (_),以建立有效的 ID。這項置換可能造成名稱衝突, 而讓轉換無法產生重複的類別與介面。您可以使用驗證特性來偵測這些問題。為了避開這些置換問題, 請重新命名元素,或使用對映特性以指定一個不會修改來源模型的替代名稱。

內容與參數的 Java 類型
UML 對應關係 產生的 Java 類型
0..1 屬性、指標或參照(例如:String)
1 屬性(例如:String)
N (N > 1)  陣列(例如 String[])
1..*、* 或 x..y  集合;請見下表

1..*、* 或 x..y 對應關係的 Java 集合
isOrdered 內容 isUnique 內容 產生的 Java 類型
True True java.util.SortedSet
True False java.util.List
False True java.util.Set
False False java.util.Collection

3. 共用轉換技術的支援

3.1 與團隊支援整合

「Java 轉換」可和團隊支援整合, 如此便能自動移出以及新增新檔案到來源控制系統中。
 

3.2 轉換對映

如果您不希望修改轉換中的來源模型, 您可以為轉換中的目標元素指定替代名稱。此外, 如果您想在和平台無關的模型中包含 Java 特有的詳細資料(如:命名限制), 或者如果來源模型的邏輯組織不適合作為目標套件, 也可能需要指定替代名稱。若要支援替代目標名稱(但不會修改來源模型), 請使用轉換對映特性。
如果要使用轉換對映特性,請執行下列動作:
1. 切換至「建模」視景。
2. 在「模型瀏覽器」視圖中,按一下 UML 模型。
3. 在功能表列中按一下建模 > 轉換 > 配置轉換
4. 建立新「UML2 至 Java 轉換」(例如,將轉換命名為「建立對映」。)
5. 在「對映」頁面上,按一下只建立對映模型(不轉換)
6. 指定檔案名稱,並按一下執行

當您按一下建立對映模型時,Java 轉換會建立一個對映模型, 而這個個別的模型含有每一個可轉換元素的成品。 這個成品會參照原始的可轉換元素, 並且和該元素同名。如果要指定原始元素的替代名稱, 請在成品的檔案名稱內容中輸入新名稱。如果您沒有變更成品的檔案名稱內容, 則轉換會使用成品的預設名稱來產生元素。如果您為套件指定替代名稱, 則這些替代名稱會影響該套件中的所有分類器(除非分類器有指定完整名稱)。下表列出替代名稱範例。
 
UML 來源 對映成品的檔案名稱 產生的 Java
"Package1" ""  "Package1"
"Package2" "com.ibm.test" "com.ibm.test"
Package1 中的 "Class1"  "" Package1.Class1
Package2 中的 "Interface1" "ITestable" com.ibm.test.ITestable
Package2 中的 "Class2" "com.ibm.test.Testable" com.ibm.test.Testable

如果要使用對映模型,請完成下列步驟:
1. 切換至「建模」視景。
2. 在「模型瀏覽器」視圖中,按一下 UML 模型。
3. 在功能表列中按一下建模 > 轉換 > 配置轉換
4. 建立新「UML2 至 Java 轉換」(例如,將轉換命名為「使用對映」。)
5. 在「對映」頁面上,按一下使用對映模型
6. 按一下您剛才所建的對映模型,並按一下執行
當轉換執行時,它會使用您在對映模型中指定的任何替代名稱。
 

3.3 就地視覺化支援

如果您不想保留原始的 UML 模型, 則可使用轉換中的視覺化特性來刪除 UML 元素, 並換成您所產生之 Java 元素的捷徑。如果要將轉換配置成刪除 UML 模型元素, 請在「配置轉換」視窗的「共用」頁面中, 按一下「置換 UML 元素」。如果置換作業會造成資料遺失, 則轉換特性不會置換元素。舉例來說, 如果 UML 元素含有圖型,則轉換特性會刪除圖型,而不會置換這些元素。
 

3.4 重新套用

Java 轉換會在產生的 javadoc 中使用 "@generated" 標示, 以便將變更合併到來源模型與修改後的程式碼中。轉換會有一些標示為 "@generated" 的 Java 元素, 這些元素會在重新轉換期間覆寫, 或者,如果這些元素已從來源模型中移除,則會被刪除。您可以收回這些元素的 "所有權";其做法是移除 "@generated" 標示,如此一來轉換便無法覆寫或刪除這些元素。
 

3.5 驗證

Java 轉換外掛程式提供一個 UML 設定檔, 可用來驗證模型中是否有潛在的轉換問題。舉例來說, 像多親繼承、循環的一般化以及命名衝突都會在產生的 Java 程式碼中造成編譯錯誤。若要查看產生之程式碼中可能發生的潛在問題清單, 請將設定檔套用在來源模型上,並執行驗證特性。
 

3.6 可追蹤性

Java 轉換可建立衍生的「從產生的 Java 元素至其 UML 來源」關係。如果要建立衍生關係, 請在「配置轉換」視窗的「共用」頁面中, 按一下「建立來源和目標關係」。當系統將產生的 Java 元素視覺化時, 元素會和其來源元素間存在一個衍生關係。
 
使用條款 | 意見
(C) Copyright IBM Corporation 2004. All Rights Reserved.