展开章节目录
实验 11

双向工程

完成 UML 模型到 Java 代码的正向工程,再把代码改动逆向同步回类图。

复习要点

  • 正向工程:导入模型 → 设置 Java → 创建组件 → 类分配组件 → 配置路径 → Generate Code。
  • 逆向工程:修改 Java → 选中模型类 → Reverse Engineer → 检查类图变化。
  • 组件的 Realizes 关系用于指定该组件实现哪些类。
  • 资料中的 JDK 与 Windows 路径仅为旧环境示例,实际操作应按本机 JDK 和输出目录配置。

操作主线

导入 .ptl → Java 默认语言 → 类分配组件 → 配置 CLASSPATH → 生成代码 → 修改并逆向

完整实验指南点击展开或收起
  1. 试验内容

1)导入wangPackage.ptl文件

2)把包wangPackage中的类图转换为java类文件,如图1-1所示

3)打开Customer.java文件,在Customer类中加入一个display()方法,删除成员变量carType。然后,通过逆向工程,看看类图变化情况。

双向工程操作截图

图1-1 类图

  1. 正向工程

2.1 导入wangPack.ptl文件

1)选择菜单File→Import,打开文件导入对话框,选择要导入的文件wangPackage.ptl,如图1-2所示。

双向工程操作截图

图1-2 导入文件wangPackage.ptl

2)点击”打开”按钮,导入文件wangPackage.ptl,如图1-3所示。

双向工程操作截图

图1-3 导入文件

2.2 将默认语言设置为java

步骤:

  1. 选择菜单Tools→Options,打开选项对话框,如图1-4所示,

双向工程操作截图

图1-4 Options对话框

  1. 点击Notation标签,将Default下的列表框中的值选择为:java(表示java语言作为代码生成的默认语言),如图1-5所示。

双向工程操作截图

图1-5 设置默认语言为java

2.3 创建组件包

1) 在浏览器窗口中,右击Component View,选择New→Package,系统自动增加了一个项目:New Package。我们把项目名改为:ComPackage,如图1-6所示。

双向工程操作截图

图1-6 创建组件包ComPackage

2)双击Component View下的Main(主组件图),打开主组件图,将包ComPackage拖入主组件图中,如图1-7所示。

双向工程操作截图

图1-7 ComPackage包拖入主组件图中

3)双击包名ComPackage后,系统自动在该包下创建一个名称是Main的组件图,并打开了Main组件图,如图1-8所示。

双向工程操作截图

图1-8 打开ComPackage包中的Main组件图

2.4 给类分配组件

现在有6个类,它们是: CommonWorker 、Customer、Employee、Maneger、Person、SkillWorker。我们要为每个类创建一个组件,并把类分配给组件。

首先为Person类创建一个组件,并把类分配给该组件,步骤如下:

1)在工具箱中,单击Component按钮;

2)在组件图上单击鼠标左键后,系统自动在组件图中创建一个组件,组件名是:NewComponent。我们把组件名改为:Person,如图1-9所示。

双向工程操作截图

图1-9 创建Person组件

3)右击Person图标,打开快捷菜单,选择Open Standard Specification,打开规范窗口后,点击Realizes标签页,如图1-10所示。

双向工程操作截图

图1-10 打开Realizes标签页

4)右击类名Person,打开快捷菜单,选择Assign项(目的是把类Person分配给组件Person)。如图1-11所示。

双向工程操作截图

图1-11 为类Person分配一个组件

5)点击”OK”按钮。

重复以上1~5步, 为其它5个类 (CommonWorker 、Customer、Employee、Maneger、SkillWorker) 创建并分配组件,如图1-12所示。

双向工程操作截图

图1-12 为6个类分配组件

2.5 设置CLASSPATH

由于Rational Rose进行双向工程时,要用到JDK类库,因此,环境变量CLASSPATH必须包含JDK主要类库。本实验中,我们将JDK类库安装在如下目录中:E:\Program Files\Java\jdk1.7.0\lib,所以,设置classpath方法如下:

1)选择菜单Tools →Java/J2ee→Project Specification,打开CLASSPATH设置对话框,如图1-13所示。

双向工程操作截图

图1-13 Classpath对话框

2)点击New按钮,增加一个项目,如图1-14所示。

双向工程操作截图

图1-14 在列表框中增加一个项目

  1. 点击配置按钮,打开路劲添加对话框,如图1-15所示。

双向工程操作截图

图1-15 Classpath添加对话框

  1. 选择Jar/Zip按钮,打开添加类库文件的对话框,如图1-16所示。

双向工程操作截图

图1-16 添加类库dt.jar

  1. 点击”打开”按钮,如图1-17所示。

双向工程操作截图

图1-17

6)重复上面2~5步,添加第2个类库,如图1-18所示。

双向工程操作截图

图1-18 添加第2个类库

7)重复上面2~3步,打开路劲添加对话框,如图1-19所示。

双向工程操作截图

图1-19

8)选择Directory按钮,弹出路径选择对话框,要求选择一个路径,用来保存模型转换为java文件的位置。本实验把D:\Users 作为保存java文件的位置,如图1-20所示。

双向工程操作截图

图1-20

9)点击”OK”按钮,如图1-21所示。

双向工程操作截图

图1-21 CLASSPATH设置

10)点击”应用”按钮 →”确定”按钮,完成Classpath设置。

2.6 生成代码

1)选择ComPackage包中的所有组件,如图1-22所示,

双向工程操作截图

图1-22 选择组件包中的所有组件

2)选择Tools →Java/J2ee →Generate Code后,就将UML模型转换为java文件了。文件保存在D:\Users\ComPackage目录下。如图1-23所示。

双向工程操作截图

图1-23 生成的代码

  1. 逆向工程

下面打开Customer.java文件,在Customer类中,加入一个display()方法,删除成员变量carType。Customer.java修改后的代码如下:

package ComPackage;

public class Customer extends Person

{

// private String carType; //删除该变量

private String licenceNo;

/**

* @roseuid 5B4190380122

*/

public Customer()

{

}

/**

* @roseuid 5B4190380123

*/

public void print()

{

}

void display() //添加一个display()方法

{

}

}

操作步骤:

  1. 选择Logical View 下的Customer类,单击鼠标右键,弹出快捷菜单;

  2. 选择Java/J2ee→Reverse Engineer,弹出逆向工程对话框。选择D:\Users目录下的组件包ComPackage,再选择文件Customer.java,如图1-24所示。

双向工程操作截图

图1-24 逆向工程对话框

注意:在图1-24中,可以通过Add按钮,添加需要进行逆向工程的java类。

  1. 依次点击”Reverse”、”Done”按钮。就将Customer.java代码,转换为UML模型类。如图1-25所示。

双向工程操作截图

图1-25 逆向工程后的类图

返回顶部 ↑