RationalRose-详细介绍和例子详细操作

发布时间:2018-06-30 13:36:53   来源:文档文库   
字号:

使用Rational Rose 进行UML可视化建模

本课程以某所大学的《在线选修课程管理系统》为例来介绍怎样使用Rational Rose 进行UML可视化建模。

最终递交三个文件:regist.mdl, regist.sql, VB的代码或Java的代码。

内容:

一、 系统描述 2

二、 用例图(Use Case View) 2

三、 活动图(Activity Diagram)(建立选修课程目录表) 5

四、 相关的包和类以及简单类图 11

五、 用例实现图(Use Case Realization Diagram) 13

六、 顺序图(Sequence Diagram)与合作图(Collaboration Diagram) 15

七、 类图中的关系(Relationships) 18

八、 类图中的操作与属性 20

九、 类图中的泛化 22

十、 状态图(Statechart Diagram) 26

十一、 构件图(Component Diagram) 31

十二、 部署图(Deployment Diagram) 34

十三、 生成程序代码 35

十四、 创建数据库设计 40

十五、 附件1:转换后的Visual Basic程序 44

十六、 附件2:转换后的Java程序 45

十七、 附件3:生成的SQL语句 46


一、 系统描述

1. 大学教师选择本学期要教授的课程,每位教师最多只能上报4门课程。

2. 教师选课结束后,教务管理人员进行协调和确认教师的课程,并创建本学期的课程目录表,向学生公布。

2.学生填写课程选修表,每个学生最多选修4门课程;每门选修课程的学生数最多为10人,最少为3人。人数达到10人时,停止学生登记注册此门课程;

3. 学生选课结束后,系统自动取消人数少于三人的课程。

4. 学生按最终的课程表到财务处办理收费手续(billing system)。

5. 教师可查询所教课程的学生花名册(roster)

6. 教务管理人员维护学生、教师和课程的信息。

二、 用例图(Use Case View)

1.《在线选修课程管理系统》中的执行者(Actors)

注册选修课程的学生;

教授选修课程的教师;

教务管理人员必须汇总选修课程情况,制作课程表;

教务管理人员必须维护关于课程、教师和学生的所有信息;

财务管理系统从本系统中取出收费信息。

2.使用Rational Rose 创建执行者(Actors)

1

1) 右击browser框中的Use Case View包,弹出快捷菜单;

2) 选择New——Actor项;

3) 输入执行者的名字;(如出错,可用Rename命令更改)

4) 如果文档窗口不可见,选择屏幕上方的View——Documentation菜单;

5) browser框中选中所需执行者;

6) 将光标置于文档框中,输入相应文档。

3.《在线选修课程管理系统》中的用例(Use Case)

注册选修课程(学生)

选择教授的选修课程(教师)

索取课程花名册(Roster)(教师)

维护课程信息(教务管理人员)

维护教师信息(教务管理人员)

维护学生信息(教务管理人员)

创建课程目录(教务管理人员)

4.使用Rational Rose 创建用例(Use Case)

2

1) 右击browser框中的Use Case View包,弹出快捷菜单;

2) 选择New——Use Case项;

3) 输入用例的名字;(如出错,可用Rename命令更改)

4) 如果文档窗口不可见,选择屏幕上方的View—— Documentation菜单;

5) browser框中选中所需用例;

6) 将光标置于文档框中,输入相应文档。

5.使用Rational Rose 创建主用例图(Main Use Case Diagram)

1) 双击browser框中的Use Case View包中的Main条目,打开主用例图;

2) 单击选中browser框中的执行者,并将其拖到主用例图中;

3) 重复第2)步,直到完成所需的工作为止;

4) 单击选中browser框中的用例,并将其拖到主用例图中;

5) 重复第4)步,直到完成所需的工作为止;

6) 在工具条中选择单向关联(Unidirectional Association)图标;

7) 单击一个执行者,并拖到相应的用例上;或单击一个用例,并拖到相应的执行者上。

3

三、 活动图(Activity Diagram)(建立选修课程目录表)

4

1.使用Rational Rose 创建活动图(Activity Diagram)

1) 右击browser框中的Use Case View包,弹出快捷菜单;

2) 选择New——Activity Diagram项;

3) 输入活动图的名字;(如出错,可用Rename命令更改)

4) 双击browser框中的Activity Diagram名称,打开该图。

2.使用Rational Rose 创建活动(Activity)

1) 在工具条中选择Activity图标;

2) 在活动图(Activity Diagram)中单击要放置活动(Activity)的位置;

3) 输入活动名字;(如出错,可用Rename命令更改)

4) 在工具条中选择State Transition图标;

5) 单击一个活动,并将其拖到相应的活动上。

5

3.使用Rational Rose 创建决策点(Decision Points)

1) 在工具条中选择Decision图标;

2) 在活动图(Activity Diagram)中单击要放置决策点的位置;

3) 输入决策的名字;(如出错,可用Rename命令更改)

4) 在工具条中选择State Transition图标;

5) 单击一个活动,并将其拖到相应的决策点上;

6) 在工具条中选择State Transition图标;

7) 单击一个决策点,拖至拐角处单击左键,再将其拖到相应的活动上;

8) 双击此条转换线,打开规格设定框;

9) 选择Detail 标签页;

10) Guard Condition框中输入条件No;

11) 点按OK按扭,关闭规格设定框;

12) 在此条转换线上单击左键,选中此条转换线;

13) 点按屏幕上方的Format:Line Style:Rectilinear菜单;

14) 调整这条线,使其美观。

6

4.使用Rational Rose 创建同步条(Synchronization Bar)

1) 在工具条中选择Horizontal Synchronization图标;

2) 在活动图(Activity Diagram)中单击要放置同步条的位置;

3) 在工具条中选择State Transition图标;

4) 完成下图。

7

5.使用Rational Rose 创建泳道( Swim lanes)

1) 在工具条中选择Swim lanes图标;

2) 在活动图(Activity Diagram)中单击要放置泳道的位置;

3) 双击泳道,打开规格说明框;

4) Name框中输入泳道的名字;

5) 点按OK按扭,关闭规格设定框;

6) 对泳道的大小位置进行调整;

7) 将所需的活动和变换线拖至新泳道中。

8

6.使用Rational Rose 创建起始活动和终止活动

1) 在工具条中选择起始活动或终止活动图标;

2) 在活动图(Activity Diagram)中单击要放置起始活动或终止活动的位置;

3) 在工具条中选择State Transition图标;

4) 单击起始活动,拖到相应的活动上,或者单击一个活动,拖至终止活动上。

9

四、
相关的包和类以及简单类图

1.在Rational RoseBrowser框中创建类(Class)

10

1) 右击browser框中的Logica View,弹出快捷菜单;

2) 选择New——Class项;

3) 输入类的名字;(如出错,可用Rename命令更改)

4) 在所建类上单击右键,弹出快捷菜单;

5) 选择Open Specification项,选择General标签页;

6) Stereotype框中选择entity类;

7) 单击OK按扭关闭规格说明框。

边界类〈Boundary Classes〉:

可用来塑造操作者与系统之间的交互;

可用来理清用户在系统边界上的需求;

可设计抽象的用户界面对象。

控制类〈Control Classes〉:

可协调对象之间的交易;

可将使用案例的细节部分封装起来;

可将复杂的计算或商务逻辑封装起来。

实体类〈Entity Classes〉:

代表永久保存的信息;

代表E-R模型之中人、事、时、地、物或概念的信息及行为。

2.在Rational RoseBrowser框中创建包(Packages)

1) 右击browser框中的Logica View,弹出快捷菜单;

2) 选择New—— Package项;

3) 输入包的名字;(PeopleInfo包用来存放与人员有关的内容;Interfaces包用来存放与界面有关的内容;UniversityArtifacts用来存放与学校工件有关的内容。)

4) 新建图中的相关类,并设置其相应的类别;

5) 单击Browser框中的类,将其拖至相应的包中。

11

3Rational Rose中的主类图(Main Class Diagram)

1) 双击browserLogica View中的Main类图以打开之;

2) 单击Browser框中的包,将其拖到Main类图上;

3) 重复第2)步,完成下图。

12

4.在Rational Rose中创建包中的主类图(Package Main Class Diagram)

1) 双击Main类图中的University Artifacts包,rose将打开这个包,并创建这个包的主类图(Package Main Class Diagram)

2) 单击Browser框中的类,将其拖到类图上;

3) 重复第2)步,完成下图。

13

五、 用例实现图(Use Case Realization Diagram)

1.使用Rational Rose 创建逻辑视图中的用例图(Use Case Diagram)

14

1) 右击browser框中的Logica View,弹出快捷菜单;

2) 选择New——Use Case Diagram项;

3) 输入用例图的名字“Realizations”;(如出错,可用Rename命令更改)

4) 右击browser框中的Logica View,弹出快捷菜单;

5) 选择New—— Use Case项;

6) 输入用例的名字;(如出错,可用Rename命令更改)

7) 双击新建的用例,打开用例的规格设定框;

8) 单击Stereotype框,选择use case realization选项;

9) 关闭用例的规格设定框;

10) 重复4——9步,双击“Realizations”,打开实现用例图;

11) 将新建的实现用例拖入图中,如下图。

15

六、
顺序图(Sequence Diagram)与合作图(Collaboration Diagram)

1.使用Rational Rose 创建顺序图(Sequence Diagram)

16

1) 右击browser框中的Logica View中的“Maintain course information”实现用例,弹出快捷菜单;

2) 选择New—— Sequence Diagram项;

3) 输入顺序图的名字“Creat a course”;

2.在顺序图中创建对象和信息

1) 双击顺序图名称,打开顺序图;

2) browserUse CaseView包中的执行者“Registrar”拖入图中;

3) 选择工具条中的“Object”图标;

4) 单击图中放置对象的位置,并输入相应的名字;

5) 重复3——4步;

6) 选择工具条中的“Object Message”图标;

7) 从信息发出者拖至信息接收者;

8) 输入信息的名字;

9) 重复6——8步。

17

3.给顺序图中的对象分配类

1) 单击选中Browser框中所需的类;

2) 将此类拖至顺序图相应的对象上。

18

3.将顺序图转换为合作图

19

1) 双击顺序图名称,打开顺序图;

2) 选择屏幕上方的菜单Browser——Create Collaboration Diagram,或者点按F5键;

3) 调整图中的对象和信息,使其美观。

七、
类图中的关系(Relationships)

1.使用Rational Rose 创建关系(Relationship)

20

1) 打开University Artifacts包中的Main类图;

2) 选择工具条中的“Association”图标(若此图标不存在,则右击工具条,选择Customize项将其加入)

3) 点按类图中的一个类,拖至另一个类,输入关系的名称;

4) 选择工具条中的“Aggregation”图标(若此图标不存在,则右击工具条,选择Customize项将其加入)

5) 点按类图中的一个整体类,拖至另一个部分类,输入关系的名称。

2.使用Rational Rose 创建角色(Role)

21

1) 新建一个People Info包的Main类图;

2) 右击关系线(靠近需要创建角色的类的一端),弹出快捷菜单;

3) 选择Role Name项,输入角色的名字。

3.增加多重度

22

1) 双击关系线,使其弹出规格设定框;

2) 选择Detail标签页(Role A Detail 或者 Role B Detail)

3) Multiplicity框中输入或选择相应的多重度;

4) 点按OK按扭,关闭规格设定框。

4.创建包之间的关系

23

1) 打开Logica View中的Main类图;

2) 选择工具条中的“dependency”图标;

3) 点按类图中的一个客户包,拖至另一个供应包。

八、 类图中的操作与属性

24

1.使用Rational Rose 创建属性和方法

1) 右击browserLogica ViewUniversityArtifacts包中的类,弹出快捷菜单;

2) 选择New——Attribute项,输入相应的名字;

3) 重复1——2步,完成添加属性;

4) 右击browserLogica ViewUniversityArtifacts包中的类,弹出快捷菜单;

5) 选择New——Operation项,输入相应的名字;

6) 重复4——5步,完成添加操作;

2.在类中增加了属性和操作后对类图的影响

1) 打开University Artifacts包中的Main类图;

2) 将图中相关类的显示改为label(右击每一个类,选择Options: Stereotype Display: Label菜单);

3) 类图中相应的属性与操作自动变化为下图。

25

九、
类图中的泛化

1.使用Rational Rose 创建一个有泛化关系的类图

1) People Info包中创建一个空类图Generalization;

2) 创建类图中相关的类,并将相关的类拖入图中;

3) 选择工具条中的“Generalization”图标;

4) 点按类图中的一个子类,拖至一个父类;

5) 重复第4步完成下图;

26

6) 将左边的泛化箭头拖至右边的泛化线上;

7) 调整图形。

27

2.将有泛化关系的类图进行扩展

1) Course Offering类拖入图中,并创建对应的关联线、角色、多重度;

2) 为相关的类创建属性。

28

3.将有泛化关系的类图进行优化

1) Browser框中将子类中的公共属性拖入父类中;

2) 将子类中多余的属性删去。

29

4.将有泛化关系的类图进行多层泛化

1) People Info包中创建相关的类,并拖入图中;

2) 创建关系线、泛化线和多重度。

 

30

一十、
状态图(Statechart Diagram)

1.使用Rational Rose 创建状态图(Statechart Diagrams)

31

1) 右击browser框中的CourseOffering类,弹出快捷菜单;

2) 选择New——Statechart Diagrams项;

3) 输入状态图的名字“CourseOffering States”。

2.使用Rational Rose 创建状态(States)

32

1) 在工具条中选择State图标;

2) 在状态图中单击要放置状态的位置;

3) 输入状态的名字。(如出错,可用Rename命令更改)

 

3.使用Rational Rose 创建状态转换(State Transitions)

33

1) 在工具条中选择State Transitions图标;

2) 单击起始状态,并拖至下一个状态;

3) 输入状态转换的名字。(如出错,可用Rename命令更改)

 4.使用Rational Rose 创建起始状态

1) 在工具条中选择Start图标;

2) 在状态图中单击要放置起始状态的位置;

3) 用状态转换线进行连接。

34

5.使用Rational Rose 创建结束状态

35

1) 在工具条中选择Stop图标;

2) 在状态图中单击要放置结束状态的位置;

3) 用状态转换线进行连接。

6.使用Rational Rose 增加状态转换的细节部分

1) 双击某条转换线,打开规格设定框;

2) 选择Detail 标签页;

3) 在相应的框中输入action(/后的内容)guard condition([ ]里的内容)以及发出的send(^后的内容);

4) 点按OK按扭,关闭规格设定框。

36

7.使用Rational Rose 增加状态的Actions部分

1) 双击某个状态,打开规格设定框;

2) 选择Actions标签页;

3) 右击Actions框中的任一位置,弹出快捷菜单;

4) 选择Insert项,将创建一个类型为entryaction

5) 双击这个action,弹出action的规格设定框;

37

6) when框中设定相应的类型;

7) type框中设定:action或者send event(^表示);

8) 输入action的名字,或event的信息;

9) 点按OK按扭,关闭Action规格设定框。

10) 点按OK按扭,关闭状态规格设定框。

38

一十一、 构件图(Component Diagram)

1. 使用Rational Rose 创建Main构件图(Component Diagram)

1) Browser框中的Component View中创建图中的各个构件包;

2) 双击Browser框中的Component View中的Main构件图;

3) Browser框中的Component View中的构件包拖入图中;

4) 创建包之间的依赖线。

39

2.创建University构件包中的构件

1) 双击Main构件图中的University包,打开图形;

2) 在工具条中选择Component图标;

3) 单击图中某一位置,放置构件;

4) 输入构件名称。

40

3.将类映射到构件上

41

1) 右击Browser框中的CourseOffering构件,弹出快捷菜单;

2) 选择Open Specification项;

3) 选择Realizes标签;

4) 右击所需的类,弹出快捷菜单;

5) 选择Assign项;(分配)

6) 点按OK按扭,关闭规格设定框。

一十二、
部署图(Deployment Diagram)

1.使用Rational Rose 创建部署图(Deployment Diagram)

1) 双击Browser框中的部署图(Deployment Diagram)

2) 选择工具条中的Processor图标,并单击图中某一位置;

3) 输入结点的名字;

4) 选择工具条中的Connection图标;

5) 点击某一结点,拖至另一结点;

6) 选择工具条中的Text图标;

7) 在相应结点下写上文字。

42

一十三、
生成程序代码

1.使用Rational Rose为构件设定程序设计语言

43

1) 右击BrowserComponent ViewUniversity包中的CourseOffering构件,弹出快捷菜单;

2) 选择Open Specification项,打开构件Course Offering的规格设定框;

3) Language框中选择相应的语言;

4) 点按OK按扭关闭对话框。

2.建模辅助工具(如需要设定,则可进入,一般情况下可省略)

1) 右击BrowserLogica ViewUniversity包中的Course Offering类,弹出快捷菜单,选择Model Assistant项;

2) 如需要设定,则可更改选项,一般情况下可省略此步操作;

3) 编程语言为Visual Basic时,见图44,前提是系统必须安装了VB;编程语言为Java时,见图45,前提是系统必须安装了JDK

44:编程语言为Visual Basic

45:编程语言为Java

3.生成代码

1) 右击BrowserComponent ViewUniversity包中的CourseOffering构件,弹出快捷菜单;

2) 选择Update Code项;

46

3) 选中相应的check框,点击Next按扭;

47

4) 点击Finish按扭;

48

5) 如有错误,则显示相应错误;

6) 点按Close按扭,关闭窗口。

一十四、
创建数据库设计

1.将实体类的persistence属性设为persistent

本系统有四个实体类:StudentProfessorCourseCourseOffering,分别将它们的persistence属性设为persistent

Course为例,双击BrowserLogical ViewUniversityArtifactsCourse类,弹出class specification对话框,选择detail tabpersistence属性设为persistent

49


2.生成数据模型

UniversityArtifacts包和PeopleInfo包转成数据库的数据模型。

UniversityArtifacts为例。右击BrowserLogical ViewUniversityArtifacts包,弹出快捷菜单,选择Data Modeler/ Transform to Data Model。弹出对话框,在Destination Schema中键入”db”,点击”OK”。在BrowserLogical View中将生成”Schemas”包和“db”子包。子包中生成了T_CourseT_CourseOffering两个table

PeopleInfo包进行相同操作,生成T_Student, T_Professor, T_RegistrationUser三个table.

50


3.创建Data Model Diagram

右击Browser框中Logical View/”Schemas”/db”,弹出快捷菜单,选择Data Modeler/ New/ Data Model Diagram,生成一个Data Model Diagram, 取名为Main

51

双击Main,打开进行编辑,将五个table拖进diagram,生成ER图。

52

4.生成SQL语句

右击Browser框中Logical View/”Schemas”/db”,弹出快捷菜单,选择Data Modeler/ Forward Engineer,跟wizard进行操作,将生成的SQL语句保存在文件中。参见附件3

你可以选择生成表格createdropSQL语句。

53


一十五、 附件1:转换后的Visual Basic程序

Option Explicit

'##ModelId=3E2A1E9D0148

Implements Course

'##ModelId=3E2E13980177

Private mCourseObject As New UniversityArtifacts.Course /*Course 泛化而来*/

'##ModelId=3E2A980002EE

Public Teacher As Professor /*由设置角色而来*/

'##ModelId=3E2A9DAE0261

Public NewProperty2(3 To 10) As Student /*由限定条件而来*/

'##ModelId=3E2A7BEB035D

Public NewProperty As Course

'##ModelId=3E2A826C0109

Public Sub getOffering()/*getOffering操作而来*/

End Sub

'##ModelId=3E2A827B0280

Public Sub addProfessor()/*addProfessor操作而来*/

End Sub

'##ModelId=3E2E139801F4

Private Sub Course_getOfferings()/*由泛化继承而来*/

End Sub

'##ModelId=3E2E13980203

Private Sub Course_setProfessor()/*由泛化继承而来*/

End Sub

'##ModelId=3E2E13980213

Private Property Set Course_(ByVal RHS As CourseOffering)

End Property

'##ModelId=3E2E13980261

Private Property Get Course_() As CourseOffering

End Property

'##ModelId=3E2E1F55030D

Public Sub CourseOffering()

End Sub

'##ModelId=3E2E3247038A

Private Property Set Course_theProfessorCourseManager(ByVal RHS As ProfessorCourseManager)

End Property

'##ModelId=3E2E32480000

Private Property Get Course_theProfessorCourseManager() As ProfessorCourseManager

End Property

'##ModelId=3E2E3248003E

Private Property Set Course_theCourseOffering(ByVal RHS As CourseOffering)

End Property

'##ModelId=3E2E3248009C

Private Property Get Course_theCourseOffering() As CourseOffering

End Property

一十六、 附件2:转换后的Java程序

//Source file: C:\\Program Files\\Rational\\RUPBuilder\\University\\CourseOffering.java

package University;

public class CourseOffering extends Course /*Course 泛化而来*/

{

private Course mCourseObject;

public Professor Teacher;  /*由设置角色而来*/

public Student NewProperty2[];

public Course NewProperty;

/** @roseuid 3E2E1F55030D */

public CourseOffering()

{

}

/**

* @roseuid 3E2A826C0109

*/

public void getOffering()/*getOffering操作而来*/

{

}

/**

* @roseuid 3E2A827B0280

*/

public void addProfessor()/*addProfessor操作而来*/

{

}

/**

* @roseuid 3E2E139801F4

*/

private void Course_getOfferings()/*由泛化继承而来*/

{

}

/**

* @roseuid 3E2E13980203

*/

private void Course_setProfessor()/*由泛化继承而来*/

{

}

/**

* @param RHS

* @roseuid 3E2E13980213

*/

private void Course_(CourseOffering RHS)

{

}

/**

* @return CourseOffering

* @roseuid 3E2E13980261

*/

private CourseOffering Course_()

{

return null;

}

}

一十七、 附件3:生成的SQL语句

CREATE TABLE T_Course (

name SMALLINT NOT NULL,

description SMALLINT NOT NULL,

creditHours SMALLINT NOT NULL,

T_Course_ID INTEGER NOT NULL,

CONSTRAINT PK_T_Course7 PRIMARY KEY (T_Course_ID)

);

CREATE TABLE T_CourseOffering (

T_CourseOffering_ID INTEGER NOT NULL,

T_Course_ID INTEGER,

T_RegistrationUser_ID INTEGER NOT NULL,

COL_2 INTEGER NOT NULL,

CONSTRAINT PK_T_CourseOffering8 PRIMARY KEY (T_CourseOffering_ID)

);

CREATE TABLE T_RegistrationUser (

realname VARCHAR ( 255 ) NOT NULL,

username VARCHAR ( 255 ) NOT NULL,

password VARCHAR ( 255 ) NOT NULL,

birthday DATE NOT NULL,

gender SMALLINT NOT NULL,

T_RegistrationUser_ID INTEGER NOT NULL,

department INTEGER NOT NULL,

CONSTRAINT PK_T_RegistrationUser11 PRIMARY KEY (T_RegistrationUser_ID)

);

CREATE TABLE T_Professor (

T_RegistrationUser_ID INTEGER NOT NULL,

CONSTRAINT PK_T_Professor12 PRIMARY KEY (T_RegistrationUser_ID)

);

CREATE TABLE T_Student (

T_RegistrationUser_ID INTEGER NOT NULL,

CONSTRAINT PK_T_Student13 PRIMARY KEY (T_RegistrationUser_ID)

);

CREATE INDEX TC_T_CourseOffering35 ON T_CourseOffering (COL_2);

CREATE INDEX TC_T_CourseOffering28 ON T_CourseOffering (T_Course_ID);

ALTER TABLE T_CourseOffering ADD CONSTRAINT FK_T_CourseOffering13 FOREIGN KEY (COL_2) REFERENCES T_Professor (T_RegistrationUser_ID) ON DELETE NO ACTION ON UPDATE NO ACTION;

ALTER TABLE T_CourseOffering ADD CONSTRAINT FK_T_CourseOffering8 FOREIGN KEY (T_Course_ID) REFERENCES T_Course (T_Course_ID) ON DELETE NO ACTION ON UPDATE NO ACTION;

ALTER TABLE T_CourseOffering ADD CONSTRAINT FK_T_CourseOffering10 FOREIGN KEY (T_RegistrationUser_ID) REFERENCES T_Professor (T_RegistrationUser_ID) ON DELETE NO ACTION ON UPDATE NO ACTION;

ALTER TABLE T_Professor ADD CONSTRAINT FK_T_Professor11 FOREIGN KEY (T_RegistrationUser_ID) REFERENCES T_RegistrationUser (T_RegistrationUser_ID) ON DELETE NO ACTION ON UPDATE NO ACTION;

ALTER TABLE T_Student ADD CONSTRAINT FK_T_Student12 FOREIGN KEY (T_RegistrationUser_ID) REFERENCES T_RegistrationUser (T_RegistrationUser_ID) ON DELETE NO ACTION ON UPDATE NO ACTION;

本文来源:https://www.2haoxitong.net/k/doc/a3ac0a78c281e53a5902ff66.html

《RationalRose-详细介绍和例子详细操作.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式