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