杰瑞科技汇

PowerDesigner如何设计Java类?

  • CDM: 用于从业务角度识别实体、属性和关系,是高层次的、与实现技术无关的模型,它更侧重于数据。
  • OOM: 用于设计类、接口、属性、方法以及它们之间的关系(继承、实现、关联等),这直接面向 Java 代码的生成,我们通常说的“Java类”主要在这里设计。

下面我将分步介绍如何使用 PowerDesigner 的 OOM 模块来创建和生成 Java 类。

PowerDesigner如何设计Java类?-图1
(图片来源网络,侵删)

第一部分:使用 Object-Oriented Model (OOM) 设计 Java 类

这是最直接、最常用的方法。

步骤 1:创建新的 OOM 模型

  1. 打开 PowerDesigner。
  2. 选择 File -> New Model
  3. 在弹出的对话框中,选择 Model types 下的 Object-Oriented Model
  4. 给模型命名,MyJavaProject
  5. Diagram 下拉菜单中选择 Class Diagram
  6. 确保 Target Language 已选择为 Java,PowerDesigner 会根据此目标语言来调整生成选项和代码风格。
  7. 点击 OK

步骤 2:创建和配置类

  1. 在右侧的 Palette(工具面板)中,找到 Class 工具(一个矩形框图标)。
  2. 在画布上点击一下,创建一个新的类,默认名称可能是 Class_1
  3. 双击这个类,打开 Class Properties(类属性)窗口。
  4. General 选项卡中,你可以设置:
    • Name: 类名(User),这是代码中使用的名称。
    • Stereotype: 类的构造型(entity, value object, service),用于标记类的角色。
    • Visibility: 可见性(Public, Private, Protected, Package)。
    • Abstract: 是否为抽象类。
    • Final: 是否为 final 类。
  5. Attributes 选项卡中,添加类的属性(成员变量):
    • 点击 Add a Row 按钮。
    • Name: 属性名(userId)。
    • Type: 属性类型(Long, String),可以直接输入或点击旁边的按钮从类型列表中选择。
    • Visibility: 可见性(通常是 private)。
    • Static: 是否为静态变量。
    • Final: 是否为 final 变量。
    • Default Value: 默认值。
    • Stereotype: 属性的构造型(@Id, @Column(name="user_id"))。
  6. Operations 选项卡中,添加类的方法:
    • 点击 Add a Row 按钮。
    • Name: 方法名(getUserId)。
    • **Return Type 返回类型(例如Long`)。
    • Visibility: 可见性(通常是 public)。
    • Static: 是否为静态方法。
    • Final: 是否为 final 方法。
    • Stereotype: 方法的构造型(@Override)。
    • Arguments 子选项卡中,可以添加方法的参数。

步骤 3:建立类之间的关系

OOM 支持多种面向对象的关系,这在 Palette 中都有对应的工具。

  • Association (关联): 最常见的关系,表示一个类知道另一个类。
    • 从一个类拖拽到另一个类。
    • 双击关系线,打开 Association Properties
    • 可以设置名称、角色、可见性、多重性(.*)等。
  • Generalization (泛化/继承): 表示 "is-a" 关系。
    • 使用 Generalization 工具(空心三角箭头)。
    • 从子类拖拽到父类。
  • Realization (实现): 表示类实现接口。
    • 使用 Realization 工具(空心虚线三角箭头)。
    • 从实现类拖拽到接口。
  • Aggregation / Composition (聚合 / 组合): 表示 "has-a" 关系,是特殊的关联。
    • 使用 Aggregation(菱形空心箭头)或 Composition(菱形实心箭头)工具。
    • 从整体类拖拽到部分类。

步骤 4:生成 Java 代码

这是最关键的一步,将你的模型转换为实际的 .java 文件。

  1. 在主菜单中选择 Language -> Generate Java Code
  2. 第一次使用时,需要进行配置
    • 在弹出的 Generation 窗口中,确保 Target 选项卡下的 Directory 设置为你想要保存代码的文件夹。
    • 切换到 Diagrams 选项卡,选择你想要生成代码的图(默认是 All diagrams)。
    • 切换到 General 选项卡,这里有很多重要的选项:
      • Generate new files: 勾选此项,PowerDesigner 会根据模型创建新文件。
      • Existing files handling: 当文件已存在时的处理方式(Keep existing, Overwrite, Rename)。
      • Generate documentation: 是否生成文档注释。
      • Package: 可以设置一个基础包名,所有生成的类都会放在这个包下。
      • Generate getters and setters: 自动生成属性的 getter 和 setter 方法。
      • Generate constructors: 自动生成构造函数。
      • Generate empty constructors: 生成无参构造函数。
      • Generate toString(): 生成 toString() 方法。
      • Generate equals() and hashCode(): 生成 equals()hashCode() 方法。
  3. 配置完成后,点击 OK,PowerDesigner 将开始生成代码,并在完成后显示一个日志窗口。

第二部分:从 Conceptual Data Model (CDM) 生成 Java 类

这种方法非常适合基于数据库模型来创建实体类(JPA Entity)。

PowerDesigner如何设计Java类?-图2
(图片来源网络,侵删)

步骤 1:创建 CDM 模型

  1. File -> New Model
  2. 选择 Conceptual Data Model
  3. 命名模型,UserDomainModel

步骤 2:设计实体和属性

  1. 使用 Entity 工具在画布上创建实体(User)。
  2. 双击实体,打开 Entity Properties
  3. Attributes 选项卡中添加属性(id, username, email)。
  4. 为每个属性设置数据类型(Integer, Char(50))。

步骤 3:建立实体关系

  1. 使用 Relationship 工具连接实体(UserAddress 是一对多关系)。
  2. 双击关系线,在 Cardinalities 选项卡中设置关系的基数(OneZero or more)。

步骤 4:从 CDM 生成 OOM,再生成 Java 代码

这是连接 CDM 和 Java 的桥梁。

  1. 在 CDM 模型窗口中,选择 Language -> Generate Object-Oriented Model
  2. 在弹出的窗口中:
    • 给新的 OOM 模型命名(UserOOM)。
    • 选择目标语言为 Java
    • 关键步骤:在 Mapping 选项卡中,你可以配置 CDM 中的元素如何映射到 OOM 中的元素。
      • 你可以设置 Entity -> ClassAttribute -> AttributeIdentifier -> Primary Key,并可以指定如何生成 JPA 注解(如 @Id, @GeneratedValue, @Entity)。
  3. 点击 OK,PowerDesigner 会根据你的 CDM 自动创建一个 OOM,其中包含相应的类、属性和关系。
  4. 你就可以像第一部分描述的那样,从这个新生成的 OOM 中导出 Java 代码了。

第三部分:反向工程 - 从现有 Java 代码生成模型

如果你有一套已经写好的 Java 代码,并希望用 PowerDesigner 来可视化和管理它,可以使用反向工程功能。

  1. 创建一个新的 OOM 模型 (File -> New Model -> Object-Oriented Model)。
  2. 在主菜单中选择 Language -> Reverse Engineer -> Java Component
  3. 在弹出的窗口中:
    • Type of Input: 选择 Directory
PowerDesigner如何设计Java类?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇