双向工程
完成 UML 模型到 Java 代码的正向工程,再把代码改动逆向同步回类图。
复习要点
- 正向工程:导入模型 → 设置 Java → 创建组件 → 类分配组件 → 配置路径 → Generate Code。
- 逆向工程:修改 Java → 选中模型类 → Reverse Engineer → 检查类图变化。
- 组件的 Realizes 关系用于指定该组件实现哪些类。
- 资料中的 JDK 与 Windows 路径仅为旧环境示例,实际操作应按本机 JDK 和输出目录配置。
操作主线
导入 .ptl → Java 默认语言 → 类分配组件 → 配置 CLASSPATH → 生成代码 → 修改并逆向
完整实验指南点击展开或收起
试验内容
1)导入wangPackage.ptl文件
2)把包wangPackage中的类图转换为java类文件,如图1-1所示
3)打开Customer.java文件,在Customer类中加入一个display()方法,删除成员变量carType。然后,通过逆向工程,看看类图变化情况。
图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
步骤:
选择菜单Tools→Options,打开选项对话框,如图1-4所示,
图1-4 Options对话框
点击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-15所示。
图1-15 Classpath添加对话框
选择Jar/Zip按钮,打开添加类库文件的对话框,如图1-16所示。
图1-16 添加类库dt.jar
点击”打开”按钮,如图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 生成的代码
逆向工程
下面打开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()方法
{
}
}
操作步骤:
选择Logical View 下的Customer类,单击鼠标右键,弹出快捷菜单;
选择Java/J2ee→Reverse Engineer,弹出逆向工程对话框。选择D:\Users目录下的组件包ComPackage,再选择文件Customer.java,如图1-24所示。
图1-24 逆向工程对话框
注意:在图1-24中,可以通过Add按钮,添加需要进行逆向工程的java类。
依次点击”Reverse”、”Done”按钮。就将Customer.java代码,转换为UML模型类。如图1-25所示。
图1-25 逆向工程后的类图