「UML 至 Java 轉換」是將 UML 2.0 規格轉換成 Java 類別。您可以使用這項轉換,
從 UML 2.0 規格植入一個 Java 專案。您也可以在起始的植入後才套用轉換,
以便讓更新後的 UML 模型和現有的 Java 程式碼相合併。
下列程序顯示最簡單的 Java 轉換用法。
如果要將 UML 模型轉換成 Java,請執行下列動作:
1. 切換至「建模」視景。
2. 在「模型瀏覽器」視圖中,用滑鼠右鍵按一下某個 UML 類別(如 Class1)。
3. 按一下轉換 > 執行轉換 > UML2 至 Java。
4. 會開啟執行轉換對話框。按一下建立目標儲存器按鈕。
5. 會開啟新 Java 專案對話框。在專案名稱欄位中輸入 simple,
並按一下完成。
6. 在執行轉換對話框中,按一下完成。
新 Java 專案含有一個預設套件,內含新 Java 類別 Class1。
轉換也可以執行其他一些更複雜的功能,
像是置換名稱而不修改來源模型,以視覺化取代 UML 物件,
將 UML 模型中的變更和 Java 來源合併,以及驗證 UML 模型看看是否有潛在的轉換問題。
UML | Java |
套件 | 同名*的 Java 套件 |
已建立 <<perspective>> 造型的套件 | 已忽略 |
具有關鍵字 <<Analysis>> 或 <<analysis>> 的套件 | 已忽略 |
類別 | 同名*且具可見性的 Java 類別 |
(類別)isLeaf 內容 | 若為 true,則 Java 類別為 "final" |
(類別)isAbstract 內容 | 若為 true,則 Java 類別為 "abstract" |
(類別)一般化 | Java 類別是指定 Super 類別的 "延伸" |
實作 | Java 類別會 "實作" 指定的介面 |
(類別至介面)實現 |
Java 類別會 "實作" 指定的介面 |
介面 | 同名*且具可見性的 Java 介面 |
(介面)一般化 | Java 類別是指定介面的 "延伸" |
列舉 |
同名*且具可見性的 Java 介面 |
EnumerationLiteral |
同名*且具可見性的 Java 欄位 |
作業 | 同名*且具可見性的 Java 方法 |
(作業)isStatic 內容 | 若為 true,則 Java 方法為 "static" |
(作業)isAbstract 內容 | 若為 true,則 Java 方法為 "abstract" |
(作業)isLeaf 內容 | 若為 true,則 Java 方法為 "final" |
(作業)和其類別同名 | Java 建構子 |
(作業)造型 <<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 內容 | UML 集合 |
產生的 Java 類型 |
True | True | 排定次序的集 |
java.util.SortedSet |
True | False | 序列 |
java.util.List |
False | True | 設定 |
java.util.Set |
False | False | 工具袋 |
java.util.Collection |
進階
進階標籤提供數個產生程式碼選項。按一下建模 > 轉換 > 配置轉換,選取一個「UML 至 Java」配置,再選取進階標籤。標籤中包含產生 getter 和 setter 勾選框,以及集合群組。
當產生 getter 和 setter 勾選時,轉換會為每一個 UML 內容產生具有 getter 和 setter 方法的 private 欄位。
如果特性的 isLeaf (final) 或 isReadOnly 設定為 True,則不會產生 setter。如果特性的 isDerived 為 True,設定元實作將會是空白。
您可以在集合群組中指定由「UML 至 Java」轉換產生的集合。例如,從序列下拉選取 "java.util.Vector",轉換會產生向量而非清單。您也可以在下拉中鍵入類別名稱來指定自訂的集合類別。如果您在工具袋下拉中鍵入 "custom.Bag",轉換會產生工具袋,而不是集合。
當您按一下建立對映模型時,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. 按一下您剛才所建的對映模型,並按一下執行。
當轉換執行時,它會使用您在對映模型中指定的任何替代名稱。