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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

使用R a t i o n a l R o s e进行U M L可视化建模本课程以某所大学的《在线选修课程管理系统》为例来介绍怎样使用RationalRose进行UML可视化建模。

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

内容:
二、用例图(UseCaseView)...............................................
三、活动图(ActivityDiagram)(建立选修课程目录表).......................
四、相关的包和类以及简单类图..........................................
五、用例实现图(UseCaseRealizationDiagram).............................
六、顺序图(SequenceDiagram)与合作图(CollaborationDiagram).............
七、类图中的关系(Relationships).......................................
八、类图中的操作与属性................................................
九、类图中的泛化......................................................
十、状态图(StatechartDiagram).........................................
十一、构件图(ComponentDiagram).......................................
十二、部署图(DeploymentDiagram)......................................
十三、生成程序代码...................................................
十四、创建数据库设计.................................................
十五、附件1:转换后的VisualBasic程序...............................
十六、附件2:转换后的Java程序......................................
十七、附件3:生成的SQL语句......................................... 一、系统描述
1.大学教师选择本学期要教授的课程,每位教师最多只能上报4门课程。

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

2.学生填写课程选修表,每个学生最多选修4门课程;每门选修课程的学生数最多为10人,最少为3人。

人数达到10人时,停止学生登记注册此门课程;
3.学生选课结束后,系统自动取消人数少于三人的课程。

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

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

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

二、用例图(UseCaseView)
1.《在线选修课程管理系统》中的执行者(Actors)
注册选修课程的学生;
教授选修课程的教师;
教务管理人员必须汇总选修课程情况,制作课程表;
教务管理人员必须维护关于课程、教师和学生的所有信息;
财务管理系统从本系统中取出收费信息。

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

1)右击browser框中的UseCaseView包,弹出快捷菜单;
2)选择New——Actor项;
3)输入执行者的名字;(如出错,可用Rename命令更改)
4)如果文档窗口不可见,选择屏幕上方的View——Documentation菜单;
5)在browser框中选中所需执行者;
6)将光标置于文档框中,输入相应文档。

3.《在线选修课程管理系统》中的用例(UseCase)
注册选修课程(学生);
选择教授的选修课程(教师);
索取课程花名册(Roster)(教师);
维护课程信息(教务管理人员);
维护教师信息(教务管理人员);
维护学生信息(教务管理人员);
创建课程目录(教务管理人员);
4.使用RationalRose创建用例(UseCase)

1)右击browser框中的UseCaseView包,弹出快捷菜单;
2)选择New——UseCase项;
3)输入用例的名字;(如出错,可用Rename命令更改)
4)如果文档窗口不可见,选择屏幕上方的View——Documentation菜单;
5)在browser框中选中所需用例;
6)将光标置于文档框中,输入相应文档。

5.使用RationalRose创建主用例图(MainUseCaseDiagram)
1)双击browser框中的UseCaseView包中的Main条目,打开主用例图;
2)单击选中browser框中的执行者,并将其拖到主用例图中;
3)重复第2)步,直到完成所需的工作为止;
4)单击选中browser框中的用例,并将其拖到主用例图中;
5)重复第4)步,直到完成所需的工作为止;
6)在工具条中选择单向关联(UnidirectionalAssociation)图标;
7)单击一个执行者,并拖到相应的用例上;或单击一个用例,并拖到相应的执行者上。


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

1.使用RationalRose创建活动图(ActivityDiagram)
1)右击browser框中的UseCaseView包,弹出快捷菜单;
2)选择New——ActivityDiagram项;
3)输入活动图的名字;(如出错,可用Rename命令更改)
4)双击browser框中的ActivityDiagram名称,打开该图。

2.使用RationalRose创建活动(Activity)
1)在工具条中选择Activity图标;
2)在活动图(ActivityDiagram)中单击要放置活动(Activity)的位置;
3)输入活动名字;(如出错,可用Rename命令更改)
4)在工具条中选择StateTransition图标;
5)单击一个活动,并将其拖到相应的活动上。


3.使用RationalRose创建决策点(DecisionPoints)
1)在工具条中选择Decision图标;
2)在活动图(ActivityDiagram)中单击要放置决策点的位置;
3)输入决策的名字;(如出错,可用Rename命令更改)
4)在工具条中选择StateTransition图标;
5)单击一个活动,并将其拖到相应的决策点上;
6)在工具条中选择StateTransition图标;
7)单击一个决策点,拖至拐角处单击左键,再将其拖到相应的活动上;
8)双击此条转换线,打开规格设定框;
9)选择Detail标签页;
10)在GuardCondition框中输入条件No;
11)点按OK按扭,关闭规格设定框;
12)在此条转换线上单击左键,选中此条转换线;
13)点按屏幕上方的Format:LineStyle:Rectilinear菜单;
14)调整这条线,使其美观。


4.使用RationalRose创建同步条(SynchronizationBar)
1)在工具条中选择HorizontalSynchronization图标;
2)在活动图(ActivityDiagram)中单击要放置同步条的位置;
3)在工具条中选择StateTransition图标;
4)完成下图。


5.使用RationalRose创建泳道(?Swimlanes)
1)在工具条中选择Swimlanes图标;
2)在活动图(ActivityDiagram)中单击要放置泳道的位置;
3)双击泳道,打开规格说明框;
4)在Name框中输入泳道的名字;
5)点按OK按扭,关闭规格设定框;
6)对泳道的大小位置进行调整;
7)将所需的活动和变换线拖至新泳道中。


6.使用RationalRose创建起始活动和终止活动
1)在工具条中选择起始活动或终止活动图标;
2)在活动图(ActivityDiagram)中单击要放置起始活动或终止活动的位置;
3)在工具条中选择StateTransition图标;
4)单击起始活动,拖到相应的活动上,或者单击一个活动,拖至终止活动上。


四、相关的包和类以及简单类图
1.在RationalRose的Browser框中创建类(Class)

1)右击browser框中的LogicaView,弹出快捷菜单;
2)选择New——Class项;
3)输入类的名字;(如出错,可用Rename命令更改)
4)在所建类上单击右键,弹出快捷菜单;
5)选择OpenSpecification项,选择General标签页;
6)在Stereotype框中选择entity类;
7)单击OK按扭关闭规格说明框。

边界类〈BoundaryClasses〉:
可用来塑造操作者与系统之间的交互;
可用来理清用户在系统边界上的需求;
可设计抽象的用户界面对象。

控制类〈ControlClasses〉:
可协调对象之间的交易;
可将使用案例的细节部分封装起来;
可将复杂的计算或商务逻辑封装起来。

实体类〈EntityClasses〉:
代表永久保存的信息;
代表E-R模型之中人、事、时、地、物或概念的信息及行为。

2.在RationalRose的Browser框中创建包(Packages)
1)右击browser框中的LogicaView,弹出快捷菜单;
2)选择New——Package项;
3)输入包的名字;(PeopleInfo包用来存放与人员有关的内容;Interfaces包用来
存放与界面有关的内容;UniversityArtifacts用来存放与学校工件有关的内
容。

)
4)新建图中的相关类,并设置其相应的类别;
5)单击Browser框中的类,将其拖至相应的包中。


3.RationalRose中的主类图(MainClassDiagram)
1)双击browser框LogicaView中的Main类图以打开之;
2)单击Browser框中的包,将其拖到Main类图上;
3)重复第2)步,完成下图。


4.在RationalRose中创建包中的主类图(PackageMainClassDiagram)
1)双击Main类图中的UniversityArtifacts包,rose将打开这个包,并创建这个
包的主类图(PackageMainClassDiagram);
2)单击Browser框中的类,将其拖到类图上;
3)重复第2)步,完成下图。


五、用例实现图(UseCaseRealizationDiagram)
1.使用RationalRose创建逻辑视图中的用例图(UseCaseDiagram)

1)右击browser框中的LogicaView,弹出快捷菜单;
2)选择New——UseCaseDiagram项;
3)输入用例图的名字“Realizations”;(如出错,可用Rename命令更改)
4)右击browser框中的LogicaView,弹出快捷菜单;
5)选择New——UseCase项;
6)输入用例的名字;(如出错,可用Rename命令更改)
7)双击新建的用例,打开用例的规格设定框;
8)单击Stereotype框,选择usecaserealization选项;
9)关闭用例的规格设定框;
10)重复4——9步,双击“Realizations”,打开实现用例图;
11)将新建的实现用例拖入图中,如下图。


六、顺序图(SequenceDiagram)与合作图(CollaborationDiagram)
1.使用RationalRose创建顺序图(SequenceDiagram)

1)右击browser框中的LogicaView中的“Maintaincourseinformation”实现用例,
弹出快捷菜单;
2)选择New——SequenceDiagram项;
3)输入顺序图的名字“Creatacourse”;
2.在顺序图中创建对象和信息
1)双击顺序图名称,打开顺序图;
2)将browser框UseCaseView包中的执行者“Registrar”拖入图中;
3)选择工具条中的“Object”图标;
4)单击图中放置对象的位置,并输入相应的名字;
5)重复3——4步;
6)选择工具条中的“ObjectMessage”图标;
7)从信息发出者拖至信息接收者;
8)输入信息的名字;
9)重复6——8步。


3.给顺序图中的对象分配类
1)单击选中Browser框中所需的类;
2)将此类拖至顺序图相应的对象上。


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

1)双击顺序图名称,打开顺序图;
2)选择屏幕上方的菜单Browser——CreateCollaborationDiagram,或者点按F5键;
3)调整图中的对象和信息,使其美观。

七、类图中的关系(Relationships)
1.使用RationalRose创建关系(Relationship)

1)打开UniversityArtifacts包中的Main类图;
2)选择工具条中的“Association”图标(若此图标不存在,则右击工具条,选择
Customize项将其加入);
3)点按类图中的一个类,拖至另一个类,输入关系的名称;
4)选择工具条中的“Aggregation”图标(若此图标不存在,则右击工具条,选择
Customize项将其加入);
5)点按类图中的一个整体类,拖至另一个部分类,输入关系的名称。

2.使用RationalRose创建角色(Role)

1)新建一个PeopleInfo包的Main类图;
2)右击关系线(靠近需要创建角色的类的一端),弹出快捷菜单;
3)选择RoleName项,输入角色的名字。

3.增加多重度

1)双击关系线,使其弹出规格设定框;
2)选择Detail标签页(RoleADetail或者RoleBDetail);
3)在Multiplicity框中输入或选择相应的多重度;
4)点按OK按扭,关闭规格设定框。

4.创建包之间的关系

1)打开LogicaView中的Main类图;
2)选择工具条中的“dependency”图标;
3)点按类图中的一个客户包,拖至另一个供应包。

八、类图中的操作与属性

1.使用RationalRose创建属性和方法
1)右击browser框LogicaView中UniversityArtifacts包中的类,弹出快捷菜单;
2)选择New——Attribute项,输入相应的名字;
3)重复1——2步,完成添加属性;
4)右击browser框LogicaView中UniversityArtifacts包中的类,弹出快捷菜单;
5)选择New——Operation项,输入相应的名字;
6)重复4——5步,完成添加操作;
2.在类中增加了属性和操作后对类图的影响
1)打开UniversityArtifacts包中的Main类图;
2)将图中相关类的显示改为label(右击每一个类,选择
Options:StereotypeDisplay:Label菜单);
3)类图中相应的属性与操作自动变化为下图。


九、类图中的泛化
1.使用RationalRose创建一个有泛化关系的类图
1)在PeopleInfo包中创建一个空类图Generalization;
2)创建类图中相关的类,并将相关的类拖入图中;
3)选择工具条中的“Generalization”图标;
4)点按类图中的一个子类,拖至一个父类;
5)重复第4步完成下图;

6)将左边的泛化箭头拖至右边的泛化线上;
7)调整图形。


2.将有泛化关系的类图进行扩展
1)将CourseOffering类拖入图中,并创建对应的关联线、角色、多重度;
2)为相关的类创建属性。


3.将有泛化关系的类图进行优化
1)在Browser框中将子类中的公共属性拖入父类中;
2)将子类中多余的属性删去。


4.将有泛化关系的类图进行多层泛化
1)在PeopleInfo包中创建相关的类,并拖入图中;
2)创建关系线、泛化线和多重度。


十、状态图(StatechartDiagram)
1.使用RationalRose创建状态图(StatechartDiagrams)

1)右击browser框中的CourseOffering类,弹出快捷菜单;
2)选择New——StatechartDiagrams项;
3)输入状态图的名字“CourseOfferingStates”。

2.使用RationalRose创建状态(States)

1)在工具条中选择State图标;
2)在状态图中单击要放置状态的位置;
3)输入状态的名字。

(如出错,可用Rename命令更改)
3.使用RationalRose创建状态转换(StateTransitions)

1)在工具条中选择StateTransitions图标;
2)单击起始状态,并拖至下一个状态;
3)输入状态转换的名字。

(如出错,可用Rename命令更改)
4.使用RationalRose创建起始状态
1)在工具条中选择Start图标;
2)在状态图中单击要放置起始状态的位置;
3)用状态转换线进行连接。


5.使用RationalRose创建结束状态

1)在工具条中选择Stop图标;
2)在状态图中单击要放置结束状态的位置;
3)用状态转换线进行连接。

6.使用RationalRose增加状态转换的细节部分
1)双击某条转换线,打开规格设定框;
2)选择Detail标签页;
3)在相应的框中输入action(/后的内容)、guardcondition([]里的内容)以及发出
的send(^后的内容);
4)点按OK按扭,关闭规格设定框。


7.使用RationalRose增加状态的Actions部分
1)双击某个状态,打开规格设定框;
2)选择Actions标签页;
3)右击Actions框中的任一位置,弹出快捷菜单;
4)选择Insert项,将创建一个类型为entry的action;
5)双击这个action,弹出action的规格设定框;

6)在when框中设定相应的类型;
7)在type框中设定:action或者sendevent(用^表示);
8)输入action的名字,或event的信息;
9)点按OK按扭,关闭Action规格设定框。

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


十一、构件图(ComponentDiagram)
1.使用RationalRose创建Main构件图(ComponentDiagram)
1)在Browser框中的ComponentView中创建图中的各个构件包;
2)双击Browser框中的ComponentView中的Main构件图;
3)将Browser框中的ComponentView中的构件包拖入图中;
4)创建包之间的依赖线。


2.创建University构件包中的构件
1)双击Main构件图中的University包,打开图形;
2)在工具条中选择Component图标;
3)单击图中某一位置,放置构件;
4)输入构件名称。


3.将类映射到构件上

1)右击Browser框中的CourseOffering构件,弹出快捷菜单;
2)选择OpenSpecification项;
3)选择Realizes标签;
4)右击所需的类,弹出快捷菜单;
5)选择Assign项;(分配)
6)点按OK按扭,关闭规格设定框。

十二、部署图(DeploymentDiagram)
1.使用RationalRose创建部署图(DeploymentDiagram)
1)双击Browser框中的部署图(DeploymentDiagram);
2)选择工具条中的Processor图标,并单击图中某一位置;
3)输入结点的名字;
4)选择工具条中的Connection图标;
5)点击某一结点,拖至另一结点;
6)选择工具条中的Text图标;
7)在相应结点下写上文字。


十三、生成程序代码
1.使用RationalRose为构件设定程序设计语言

1)右击Browser框ComponentView中University包中的CourseOffering构件,弹
出快捷菜单;
2)选择OpenSpecification项,打开构件CourseOffering的规格设定框;
3)在Language框中选择相应的语言;
4)点按OK按扭关闭对话框。

2.建模辅助工具(如需要设定,则可进入,一般情况下可省略)
1)右击Browser框LogicaView中University包中的CourseOffering类,弹出快捷
菜单,选择ModelAssistant项;
2)如需要设定,则可更改选项,一般情况下可省略此步操作;
3)编程语言为VisualBasic时,见图44,前提是系统必须安装了VB;编程语言为Java
时,见图45,前提是系统必须安装了JDK。

图:编程语言为VisualBasic时
图:编程语言为Java时
3.生成代码
1)右击Browser框ComponentView中University包中的CourseOffering构件,弹
出快捷菜单;
2)选择UpdateCode项;

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

4)点击Finish按扭;

5)如有错误,则显示相应错误;
6)点按Close按扭,关闭窗口。

十四、创建数据库设计
1.将实体类的persistence属性设为persistent
本系统有四个实体类:Student、Professor、Course、CourseOffering,分别将它们的persistence属性设为persistent。

以Course为例,双击Browser框LogicalView中UniversityArtifacts中Course类,
弹出classspecification对话框,选择detailtab,将persistence属性设为persistent。


2.生成数据模型
将UniversityArtifacts包和PeopleInfo包转成数据库的数据模型。

以UniversityArtifacts为例。

右击Browser框LogicalView中UniversityArtifacts 包,弹出快捷菜单,选择DataModeler/TransformtoDataModel。

弹出对话框,在DestinationSchema中键入”db”,点击”OK”。

在Browser框LogicalView中将生
成”Schemas”包和“<Schema>db”子包。

子包中生成了T_Course和T_CourseOffering两个table。

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

3.创建DataModelDiagram
右击Browser框中LogicalView/”Schemas”/“<Schema>db”,弹出快捷菜单,选择
DataModeler/New/DataModelDiagram,生成一个DataModelDiagram,取名为Main。


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

图4.生成SQL语句
右击Browser框中LogicalView/”Schemas”/“<Schema>db”,弹出快捷菜单,选择DataModeler/ForwardEngineer,跟wizard进行操作,将生成的SQL语句保存在文件中。

参见附件3。

你可以选择生成表格create或drop的SQL语句。


十五、附件1:转换后的VisualBasic程序
OptionExplicit
'##ModelId=3E2A1E9D0148
ImplementsCourse
PrivatemCourseObjectAsNewUniversityArtifacts.Course/*由Course泛化而来*/ '##ModelId=3E2A980002EE
PublicTeacherAsProfessor/*由设置角色而来*/
'##ModelId=3E2A9DAE0261
PublicNewProperty2(3To10)AsStudent /*由限定条件而来*/
'##ModelId=3E2A7BEB035D
PublicNewPropertyAsCourse
'##ModelId=3E2A826C0109
PublicSubgetOffering()/*由getOffering操作而来*/
EndSub
'##ModelId=3E2A827B0280
PublicSubaddProfessor()/*由addProfessor操作而来*/
EndSub
'##ModelId=3E2E139801F4
PrivateSubCourse_getOfferings()/*由泛化继承而来*/
EndSub
PrivateSubCourse_setProfessor()/*由泛化继承而来*/
EndSub
PrivatePropertySetCourse_(ByValRHSAsCourseOffering)
EndProperty
PrivatePropertyGetCourse_()AsCourseOffering
EndProperty
'##ModelId=3E2E1F55030D
PublicSubCourseOffering()
EndSub
'##ModelId=3E2E3247038A
PrivatePropertySetCourse_theProfessorCourseManager(ByValRHSAsProfessorCourseMa nager)
EndProperty
PrivatePropertyGetCourse_theProfessorCourseManager()AsProfessorCourseManager EndProperty
'##ModelId=3E2E3248003E
PrivatePropertySetCourse_theCourseOffering(ByValRHSAsCourseOffering) EndProperty
'##ModelId=3E2E3248009C
PrivatePropertyGetCourse_theCourseOffering()AsCourseOffering
EndProperty
十六、附件2:转换后的Java程序
//Sourcefile:C:\\ProgramFiles\\Rational\\RUPBuilder\\University\\CourseOfferin g.java
packageUniversity;
publicclassCourseOfferingextendsCourse/*由Course泛化而来*/
{
privateCoursemCourseObject;
publicProfessorTeacher; /*由设置角色而来*/
publicStudentNewProperty2[];
publicCourseNewProperty;
/**@roseuid3E2E1F55030D*/
publicCourseOffering()
{
}
/**
*@roseuid3E2A826C0109
*/
publicvoidgetOffering()/*由getOffering操作而来*/ {
}
/**
*@roseuid3E2A827B0280
*/
publicvoidaddProfessor()/*由addProfessor操作而来*/ {
}
/**
*@roseuid3E2E139801F4
*/
privatevoidCourse_getOfferings()/*由泛化继承而来*/ {
}
/**
*@roseuid
*/
privatevoidCourse_setProfessor()/*由泛化继承而来*/ {
}
/**
*@paramRHS
*@roseuid
*/
privatevoidCourse_(CourseOfferingRHS) {
}
/**
*@returnCourseOffering
*@roseuid
*/
privateCourseOfferingCourse_()
{
returnnull;
}
}
十七、附件3:生成的SQL语句CREATETABLET_Course(
nameSMALLINTNOTNULL,
descriptionSMALLINTNOTNULL,
creditHoursSMALLINTNOTNULL,
T_Course_IDINTEGERNOTNULL,
CONSTRAINTPK_T_Course7PRIMARYKEY(T_Course_ID)
);
CREATETABLET_CourseOffering(
T_CourseOffering_IDINTEGERNOTNULL,
T_Course_IDINTEGER,
T_RegistrationUser_IDINTEGERNOTNULL,
COL_2INTEGERNOTNULL,
CONSTRAINTPK_T_CourseOffering8PRIMARYKEY(T_CourseOffering_ID) );
CREATETABLET_RegistrationUser(
realnameVARCHAR(255)NOTNULL,
usernameVARCHAR(255)NOTNULL,
passwordVARCHAR(255)NOTNULL,
birthdayDATENOTNULL,
genderSMALLINTNOTNULL,
T_RegistrationUser_IDINTEGERNOTNULL,
departmentINTEGERNOTNULL,
CONSTRAINTPK_T_RegistrationUser11PRIMARYKEY(T_RegistrationUser_ID) );
CREATETABLET_Professor(
T_RegistrationUser_IDINTEGERNOTNULL,
CONSTRAINTPK_T_Professor12PRIMARYKEY(T_RegistrationUser_ID)
);
CREATETABLET_Student(
T_RegistrationUser_IDINTEGERNOTNULL,
CONSTRAINTPK_T_Student13PRIMARYKEY(T_RegistrationUser_ID)
);
CREATEINDEXTC_T_CourseOffering35ONT_CourseOffering(COL_2); CREATEINDEXTC_T_CourseOffering28ONT_CourseOffering(T_Course_ID);
ALTERTABLET_CourseOfferingADDCONSTRAINTFK_T_CourseOffering13FOREIGNKEY(COL_2)R EFERENCEST_Professor(T_RegistrationUser_ID)ONDELETENOACTIONONUPDATENOACTION; ALTERTABLET_CourseOfferingADDCONSTRAINTFK_T_CourseOffering8FOREIGNKEY(T_Course _ID)REFERENCEST_Course(T_Course_ID)ONDELETENOACTIONONUPDATENOACTION; ALTERTABLET_CourseOfferingADDCONSTRAINTFK_T_CourseOffering10FOREIGNKEY(T_Regis trationUser_ID)REFERENCEST_Professor(T_RegistrationUser_ID)ONDELETENOACTIONONU PDATENOACTION;
ALTERTABLET_ProfessorADDCONSTRAINTFK_T_Professor11FOREIGNKEY(T_RegistrationUse r_ID)REFERENCEST_RegistrationUser(T_RegistrationUser_ID)ONDELETENOACTIONONUPDA TENOACTION;
ALTERTABLET_StudentADDCONSTRAINTFK_T_Student12FOREIGNKEY(T_RegistrationUser_ID )REFERENCEST_RegistrationUser(T_RegistrationUser_ID)ONDELETENOACTIONONUPDATENO ACTION;。

相关文档
最新文档