图11 Presentation标签
最后两个标签分别是 Constrains 和 Tagged Values。Constrains 主要可以给元素添加, 删除和修改一些限制信息,一般情况下使用不到。Tagged Values 则列出了做了标记的值列 表,例如当按照图 10中设置了文档后,类的 Tagged Values 显示的内容列表如图 12
所示。在这个标签的工具栏上可以删除一些标签,还可以双击 Tag(标记)和 Value(取值) 进行相关值的编辑。
图12 Tagged Values标签
5.正向工程-UML类图生成java代码
在实际的项目开发中,如果设计出来的图不能变成 Java 代码,那的确是让 UML 的功能大打折扣,尤其是详细到每个类的属性和操作,包名这样的详细设计,如果过后还需要一点点的把对应的代码写出来, 的确让人头痛。 所幸的是, MyEclipse 的 UML, 或者说 ArgoUML以及大多数的专业一点的 UML 设计器,都提供正向工程—从 UML 类图生成特定语言。
MyEclipse 支持直接从 UML 类图中的类定义生成 Java 代码。操作步骤如下:
1. 打开包含类图的 UML 仓库文件(UMR) ,这些类必须按照 Java 的规范进行设计才可生成 Java 代码;
2. 选择菜单 UML > Generate Java... ,来启动正向工程(Forward-Engineering)向导,如图 13 所示。
图13 选择菜单Generate Java
随后, 将会弹出如图 14 所示的正向工程向导对话框。 按照下列步骤进行操作即可 (也可参照图中的箭头提示) :
3. 点击对话框中的 Java Output Folder(Java 输出目录)右侧的 Browse 按钮,在弹出的对话框中选择任何 Java 或者 J2EE 项目的源代码目录 (一般名为 src) , 然后,点击 OK 按钮关闭对话框。被选中的目录将存放从类图所最终生成的 Java 代码。 2. 在Generate Java source for selected UML Java entities (生成选中的UML Java
实体的 Java 源代码)下面的类来列表中,选中一个或者多个需要翻译为 Java 代码 的类。
3. 点击 Finish 按钮来关闭对话框,然后进行代码生成处理过程。
图14 UML正向工程向导
在稍后可能会出现一些警告和提示的对话框。 一般包括: 无返回类型的操作定义没有写入 void 类 型 , 例 如 :setAge(in age:Integer) 应 该 加 入 void 修 改 为 : setAge(in
age:Integer):void;一些非法的关联选项(虽然画图的时候可以随便来画,但是生成的时候,务必确保这些关联有实际的意义) 。这种情况下,对应的 Java 代码就不能生成,只有修正了这些问题才能如期产生代码。还有的时候是 MyEclipse 本身的 Bug,导致生成的类文件是空白的。总之此功能不是很完备。
在生成过程结束后,就可以在指定的源代码目录中看到生成的类文件的 Java 源码了。
6.反向工程-java代码生成UML类图
MyEclipse 的 Java 代码到 UML 反向工程的过程有两种不同的方式可以实现, 包括批量处理模式和拖放模式,下面我们对这两种模式一一进行介绍。
批处理模式:该模式下可以把任意 Java 项目中源代码目录中的任何选中的类、接口 等定义转换成 UML 的类图 。按照下列步骤进行操作:
1. 打开原来的测试项目,然后在项目中新建一个 UML 模型文件 , 并双击并打开这个 UMR 文件。 当然也可以选择以前创建的任何 Java 或者 J2EE 项目,只要项目中包含源代码即可。
2. 选择菜单 UML > Reverse Engineer UML from Java... 来启动 MyEclipse UML 反向 工程向导。随后即弹出 UML 反向工程向导对话框,如图 15 所示。
图15 UML反向工程向导第一页
3. 在向导对话框中选中需要反向工程处理的 Java 包或者类,然后点击 Next 按钮进入下一页,如图 16所示。
图16 UML反向工程类图生成设置
4. 在图16 中进行反向工程的选项设置, 一般情况下保持默认设置即可。 这些设置包括Java Process(Java 处理)下的选项:Create class diagrams(生成类图);Hide class interface details(隐藏类和接口的详细内容)。以及另一个选项栏目 Java UML Generation(Java UML 生成):Model Java attribute as(将 Java 属性建模为)UML attributes(UML 属性)或者 UML associations(UML 关联);Model Java arrays as(将 Java 数组建模为)UML datatype(UML 数据类型)或者 UML multiplicity 1...n(UML 一对多)。
5. 点击 Finish 按钮来开始反向过程处理过程。 稍等片刻后, 即可看到反向过程的执行结果汇总对话框, 并让我们可以选中生成的一个或者多个类图,如图 17 所示。检查 Outline 视图中的 UML 图列表,可以看到反向工程是基本上每个包都生成了一个类图, 而不是像大家想象的那样都把类放到了一张图上。 例如在这个例子中就生成了两个新类图:_classes 和 dao_classes。这样,双击这两个类文件就可以看到生成的类文件了,非常方便。基本上还没碰到过什么大问题。稍后将 UML 导出为图片,就可以在项目文档中自由的引用了。
图17 反向工程汇总对话框
接下来要介绍的,是反向工程的另一个模式: 拖放模式。这个模式适合于快速小批量的从 Java 代码中所定义的类和接口生成对应的 UML 类图, 可以无缝的将任何 Java 类和接口添加到任一个 UML 模型的类图中。操作步骤如下:
1. 从 Package Explorer 视图中,选中一个或者多个类或者接口(需要提示大家的是, 除了源代码包里面的类可以选中,Library 里面的类也可以被选中); 2. 鼠标单击并拖动选中的类和接口(不放开鼠标左键移动光标)放到当前打开的 UML 图形编辑器中的类图,如图 18 所示;
3. 此时将会弹出如图 16 所示的 UML 反向工程类图生成设置信息, 一般取默认 值即可,或者按照图 16 后所附带的说明进行定制; 4. 点击 Finish 按钮即可启动生成类图向导。
当向导结束后,即可看到在类图上生成了对应的类定义,以及其相互关系。如图 19所示。
图18 拖放类和接口