Java 中的 UML 轉換

Rashmi Patidar 2024年2月15日
Java 中的 UML 轉換

Unified Modeling Language 是 UML 的首字母縮寫,是一種用於表示和記錄軟體系統的標準語言。這些模型為開發人員帶來了更好的理解。這些圖表有助於視覺化、表達需求和指定軟體系統的構造。

該圖對業務分析師、設計師、測試人員、質量分析師、客戶、技術作者很有幫助。

UML 是此類別下各種型別圖的高階術語。解釋 UML 圖時需要注意各種對映。讓我們詳細看看 UML 圖和它們的轉換。

大學的 UML 表示

在上圖中,涉及各種實體。所以轉換的第一步是從下面的實體建立一個類。這些實體以黃色顯示。class 包含圖中給出的屬性。此外,特定欄位的資料型別出現在前面。

  1. 要建立一個類,請在編輯器中輸入 Intellij IDE。
  2. 建立一個名為 University、College、Students 和 Department 的新類。
  3. private String university Id 型別的格式輸入資料型別的欄位。
  4. 選擇新建立的欄位並在螢幕上單擊滑鼠右鍵或按 alt+Insert 鍵。
  5. generate 彈出視窗將在螢幕上閃爍。
  6. 向下滾動到 Getter and Setter
  7. 單擊底部的 Ok
  8. 同樣地,也繼續其他類。

該過程生成所有類和欄位以及 getter 和 setter 方法。現在檢查表之間的關係。

至於類的一端|管道符號可見。線上條的另一端,在一條線上可以看到一個符號,使標誌看起來像一個三英尺的系統,通常被稱為烏鴉腳符號。該關係描述了一對多型別的關係。一對多關係表示單個實體可以存在多個實體。在我們的例子中,可能只有一所大學,而且很多學院都註冊了。

該關係通過使 University 類儲存 College 物件的 n 個數字來表示 Java 類。與這個 College 類相反,將只儲存一個 University 物件引用。因此這些類看起來像下面提到的類。

public class University {
  private String universityId;
  private String universityName;
  private String address;
  private List<College> colleges;
}

public class College {
  private String collegeId;
  private String collegeName;
  private University university;
}

Enumerations 可用於將實體與其他實體相關聯。它提供了從一組定義的值中選擇一個值的能力。當有最少的選擇集時,enums 是合適的選擇。

在下面的類圖中,檢查關係的聚合和組合型別。

組合和聚合

黑色暗鑽石符號代表要合成的關係型別。簡單來說,Composition 是對兩個實體的依賴,或者如果一個實體不存在,那麼另一個實體也將不存在。所以情況如上所示。car 實體由 Wheels 類組成。因此,如果沒有 Wheels 例項,Car 不會被視為汽車。所以它描繪了強關係,因此是組合關係。

在下面的類中實現組合行為是一個例子。

class Wheel {
  private String manufacturer;
}

final class Car {
  private final Wheel Wheel; // Composition

  Car(Wheel wheel) {
    this.wheel = wheel;
  }

  public void move() {
    System.out.println("Car works");
  }
}
}

Car 類中帶有 Wheel 例項的 final 說明符定義了 Composition 關係。因此它必須在汽車例項被呼叫時啟動。輪子在建構函式中被例項化。

另一種關係是聚合,由黑色空菱形形狀表示。這兩個實體沒有強相關性,獨立存在,因此與組合關係相反。如果兩者之一不存在,那麼其他人也可以生存。如上所述,使用 CarBrand 實體。即使汽車沒有 Brand Name 例項,那麼汽車類也存在。

作者: Rashmi Patidar
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn