实验用RationalRose生成代码

实验用RationalRose生成代码
实验用RationalRose生成代码

实验:用Rational Rose生成代码

在Rational中提供了将模型元素转换成目标代码,以及将目标代码转换成模型元素的功能,我们称之为"双向工程"。这极大地方便了软件开发人员的设计工作,能够使设计者把握系统的静态结构,起到帮助编写优质代码的作用。

不同的版本对于代码生成提供了不同程度的支持,在Rational Rose 2003中,Rational Rose Enterprise版本可以使用多种语言进行代码生成,这些语言包括Ada83、Ada95、ANSI C++、CORBA、Java、COM、Visual Basic、Visual C++、Oracle 8和XML_DTD等。我们可以通过选择"Tools"(工具)下的"Options"(选项)选项查看其所支持的语言信息,如图5-23所示。

下面,我们以Java目标语言为例,说明使用Rational Rose生成代码的四个步骤。

步骤1. 选择待转换的模型元素

在Rational Rose中,打开已经设计好的目标模型:类、构件或包。使用Rational Rose

生成代码一次可以生成一个类(Class)、一个构件(Component)或一个包(Package)。我们通常在逻辑视图的类图中选择要转换的类,在逻辑视图或构件视图中选择要转换的包或构件。如果选择的目标模型是包或构件,则在这个包或构件下的所有模型都将被转换成目标代码。

步骤2. 检查模型的正确性和Java语言的语法错误

Rational Rose拥有独立于各种语言之外的模型检查功能,通过该功能,能够在代码生成以前,保证模型的一致性。在生成代码前,最好检查一下模型,发现并处理模型中的错误和不一致性,使代码正确生成。通过选择"Tools"(工具)下的"Check Model"(检查模型)选项,可以检查模型的正确性,如图5-24所示。

检查出来的错误,将在下方的日志窗口中显示,常见的错误是对象与类不映射等。对于在检查模型错误时出现的这些错误,需要及时地进行更正。在Report(报告)工具栏中,可以通过Show Usage...、Show Instances...、Show Access Violations等功能辅助更正错误。

通过选择"Tools"(工具)中"Java"菜单下的"Syntax Check"(语法检查)选项,可以进行Java 语言的语法检查,如图5-25所示。

如果检查出一些语法错误,也将在日志窗口中显示。如果检查无误,出现如图5-26所示的提示信息。

步骤3. 设置代码生成属性

在Rational Rose中,可以对类、类的属性、操作、构件和其他一些元素设置代码生成属性,通常,Rational Rose提供默认的设置,我们可以通过选择"Tools"(工具)下的"Options"(选项)选项,自定义设置代码生成属性。设置的代码生成属性,将影响模型中使用Java实现的所有类,如图5-27所示。

对单个类进行设置的时候,可以通过某个类,选择该类的规范窗口(Class Specification for ClassName),在对应的语言中修改属性,如图5-28所示。

步骤4. 生成代码

在使用Rational Rose Enterprise版本进行代码生成之前,一般需要将一个包或构件映射到一个Rational Rose的路径目录中,指定代码生成的路径。通过选择"Tools"(工具)中"Java"菜单下的"Project Specification"(项目规范)选项,可以设置项目的生成路径,如图5-29所示。

在项目规范(Project Specification)对话框中,我们在Classpaths下,添加生成的路径,可以选择目标代码是生成在一个jar/zip文件中,还是生成在一个目录中。

在设定完生成路径之后,可以在工具栏中选择"Tools"(工具)中"Java"菜单下的"Generate Code"(生成代码)选项生成代码,如图5-30所示。

我们以图5-30中的类模型为例,来说明代码的生成。在这个类的模型中,类的名称为"Student",有一个私有属性name,还包含一个"public"类型的方法"getName()"和一个该类的构造函数"Student()"。通过上面的步骤,对该类进行代码生成,获得的代码()如下所示。

在程序中,可以一一对应出在类图中定义的内容。

代码

1.//Source file: D:\\

2.public class ClassName {

3. private String name;//对应图中的name属性

4. /**

5. * @roseuid 467169E40029

6. */

7. public Student(){ //对应图中的ClassName方法

8.

9. }

10. /**

11. * @return String

12. * @roseuid 46723BHD0532

13. */

14. public String getName(){ //对应图中的getName方法

15. return null;

16. }

17.}

在生成的代码中,我们注意到如下的语句:

1.@roseuid 467169E40029

这个带数字和字母的符号,是用来标识代码中的类、操作以及其它模型元素的,便于Rational Rose中的模型与代码实现同步关联。

相关主题
相关文档
最新文档