无论是从模型生成代码还是代码生成模型,都是一项非常复杂的工作。StarUML将正向和逆向工程结合在一起,并且提供了一种在描述系统的架构或设计和代码的模型之间进行双向交换的机制。
正向工程(代码生成)是指从模型直接产生一个代码框架,这将为程序员节约很多用于编写类、属性、方法代码的琐碎的工作时间。但是这不等同于不用编写代码了,而是存在了一个框架,这个框架可以使开发人员思路更清晰。在StarUML中,可以将模型中的一个或多个类图转换为Java、C++、C#源代码。
生成Java代码的具体步骤如下:
01 单击“Tools→Java→Generate Code”菜单,如图3.22所示。
图3.22 “Generate Code”菜单
02 从“Java Code Generation”对话框中选择设计模块,如图3.23所示,单击 “ Next”。
图3.23 选择设计模块
03 为了使模块或者图的所有类都生成stub code,选择 “ Select All”,如图3.24所示,然后单击“Next”。
图3.24 选择类
04 选择一个有效的输出路径,如图3.25所示,单击 “ Next”。
图3.25 选择输出路径
05 在弹出的“Options Setup”对话框中选中“Generate the Documentation by JavaDoc”和“Generate empty Java Doc”复选框,如图3.26所示,单击“Next”。
图3.26 设置选项
06 弹出“Java code generated successfully”的提示,说明现在StarUML已将图产生了代码,如图3.27所示,单击“确定”退出提示对话框。
图3.27 代码生成
07 单击“Code Generation”对话框的“Finish”按钮后就可以编辑生成的代码,以增加应用,如图3.28所示。
图3.28 生成的Java文件
相应的文件中包含了图中对应的属性及操作,即Java中类的变量和方法。借阅者类Java文件如图3.29所示。
图3.29 借阅者类Java文件
从图3.29中不难看出生成的Java文件格式非常标准,这样帮助开发人员查看和编写,在此基础上可以按照功能需求对其方法进行实现。对于可能涉及到并生成的接口其方法是抽象的,因此没有代码。在添加代码过程中如果需要对其增加注释,需要注意的是要按照生成注释的规范进行,因为其注释风格是 “ JavaDoc”风格,这部分内容在Java相关的图书中会有详细的介绍。
逆向工程是分析Java代码,然后将其转换到模型的过程。StarUML可以从现有的Java代码创建一个类图,这被称为逆向工程 “ reverse engineering ” ,当从现有的代码生成图表,或者修改了生成的代码,并且想在图表中反应出来时,就要启用逆向工程了。
通过图表或者文本编辑器去反复工作的过程,是面向对象编程中的一个基本过程,被称为双向工程 “ round-trip engineering ” 。
其逆向工程的实现步骤如下:
01 单击“Tools→Java→Reverse Engineer”菜单,如图3.22所示。
02 在弹出的“select Source Code”对话框中选择Java代码所在的目录,并单击“Add”或“Add All”按钮,将它们包括在逆向工程过程中,如图3.30所示,“”然后单击Next。
图3.30 选择源代码
03 在弹出的“Select the Package to Contain Result”对话框中选择需要的类加入模块,如图3.31所示,然后单击“Next”。
图3.31 添加模块中
04 在弹出的“Option Setup”对话框中选择默认的“public”、“package”、“protected”和 “ private”。同样,选中默认的单选按钮 “ Create the field to the Attribute”。其他可以不用选中,如图3.32所示。
图3.32 属性设置
05 对选项做了检查后,单击 “ Run”。
06 弹出“Java reverse engineering has been completed successfully”提示信息,表示逆向工程已成功,如图3.33所示,单击“确定”按钮,在单击“Reverse Engineering”中的“Finish”按钮。
图3.33 逆向工程转换
StarUML会向模块中添加导入的类,但并不是原项目中的图,如图3.34所示。可以从Model Explorer拖动即可添加到项目图中。
图3.34 生成的类