UML软件建模实验指导书.docx
- 文档编号:25979587
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:79
- 大小:4.16MB
UML软件建模实验指导书.docx
《UML软件建模实验指导书.docx》由会员分享,可在线阅读,更多相关《UML软件建模实验指导书.docx(79页珍藏版)》请在冰豆网上搜索。
UML软件建模实验指导书
UML软件建模
实验指导书
计算机工程学院
目录
实验一UML用例图和类图3
实验二UML序列图和协作图29
实验三UML活动图的设计和实现42
实验四UML构件图和部署图53
实验一UML用例图和类图
一、实验题目
学校的网上选课系统的用例图和类图
二、实验目的
1、能够根据系统的功能分析系统的用例组成,正确确定用例图中的角色。
2、能够分析系统的用例、活动者以及它们之间的关系。
3、根据对系统的分析,准确确定相应的类,确定类的属性和操作,正确分析属性和操作的可继承性
4、使用Rose软件能正确画出用例图,并说明每一个用例的事件流。
正确使用Rose软件定义类和类的关系和画出完整的类图。
三、实验要求
1、根据需求文档确定每一个用例的名称、参与执行者(活动者)、前置条件、主事件流、辅事件流和后置事件流。
2、能从一类单一的对象中抽象出类的定义,并依据实际要求,设计类的属性和操作。
3、能对现实世界中的对象存在各种各样的关系,分析出这些关系,主要有:
继承关系;类之间的关联。
并能在类图中反映这些关系。
四、实验内容
学校的网上选课系统的用例图和类图的设计和实现
五、用例图
1、用例图设计实例
介绍学校的网上选课系统的用例图的设计和实现
2、需求
学校的网上选课系统主要包括如下功能:
管理员通过系统管理界面进入,建立本学期要开的各种课程、将课程信息保存在数据库中并可以对课程进行改动和删除。
学生通过客户机浏览器,根据学号和密码进入选课界面,在这里学生可以进行三种操作:
查询已选课程、选课以及付费。
同样,通过业务层,这些操作结果存入数据库中。
3、分析
本系统涉及的用户包括管理员(Registrar)和学生(student),他们是用例图中的活动者,他们的主要特征相似,都具有姓名和学号等信息,所以可以抽象出“基”活动者People,而Registrar和Student则从People统一派生。
数据库管理系统是另外一个活动者。
4、事件流
下面是系统中出现的一些事件流。
添加课程事件流:
(1)管理员选择进入管理界面,用例开始。
(2)系统提示输入管理员密码
(3)管理员输入密码。
(4)系统验证密码。
A1:
密码错误
(5)进入管理界面,系统显示目前所建立的全部课程信息
(6)管理员选择添加课程。
(7)系统提示输入新课程信息
(8)管理员输入信息。
(9)系统验证是否和已有课程
A2:
有冲突
(10)系统添加新课程,提示课程添加成功。
(11)系统重新进入管理主界面,显示所有课程。
(12)用例结束。
其他事件流:
A1:
密码错误
(1)系统提示再次输入。
(2)用户确认。
(3)三次错误,拒绝再次访问。
(4)否则进入添加课程事件流第5步。
A2:
有冲突
(1)系统提示冲突,显示冲突课程信,
(2)用户重新输入。
(3)继续验证直到无冲突。
(4)进入添加课程事件流第10步。
删除课程事件流和修改课程事件流与此类似。
选课事件流:
(1)学生进入选课登录界面,用例开始。
(2)系统提示输入学号和密码。
(3)学生输入学号和密码。
(4)系统验证。
Al:
验证失败
(5)进人选课主界面。
(6)学生点击选课。
(7)系统显示所有课程信息。
(8)学生选择课程。
(9)系统验证课程是否可选。
A2:
不可选
(10)系统提示课程选择成功,提示学生交费。
(11)用例结束。
错误流:
A1:
验证失败
(1)系统提示验证失败,提示重新输入。
(2)三次失败,拒绝访问。
(3)成功,转选课事件流第5步。
A2:
课程不可选
(1)系统提示课程不可选及原因。
(2)学生重新选课。
(3)重新验证直至成功。
(4)转选课事件流第10步。
因为付费方式多样,所以在此将不讨论付费用例。
查询事件流比较简单,这里也不详细描述。
根据以上的分析,可以绘制出如图1所示的系统用例图。
图1系统用例图
在Rose2003中设计选课系统的用例图,具体步骤如下:
(1)点击浏览器中的usecaseView中的Main,弹出用例图窗口如图3。
此时,与用例图窗口对应的工具栏如图2所示。
图2工具栏
图3用例图窗口
(2)将光标置于工具栏的Actor图标上,按下左键并将光标拖曳到用例图窗口上,放开左键,用例图窗口内出现一个活动的图标(见图4),其名字为“NewClass”。
图4绘制用例图之1
(3)修改元素的名字有如下两种方法:
①在用例图窗口中双击NewClass图标,弹出如图5所示的窗口。
然后再选择“General”选项卡,将Name修改为“People'’,最后按下“确认”按钮。
②如图4所示,在用例图窗口中将光标置于“NewClass”处,直接将其修改为“People”。
图5绘制用例图之2
(3)采用同样的方法,在用例图中添加Registrar和Student图标,点击用例窗口工具栏中的图标“generalization”,在用例图窗口中,将光标从Student移动到People,在Student与People之间添加概括(generalization)关系(见图6)。
图6绘制用例图之3
(4)同样在Registrar和People之间添加概括关系。
(5)点击工具栏中UseCase的图标,将光标移到用例图窗口,窗口内显示用例的椭圆图标,采用和(3)同样的方法,将图标名称改成“SelectCourse”。
添加SelectCourse用例,点击工具栏中的UndirectionalRelation图标,将光标从Student指向SelectCourse,在Student和SelectCourse之间添加关系(见图7)。
图7绘制用例图之4
(6)重复以上步骤,完成所示的用例图。
图8用例图
(10)然后再指定活动者和用例的属性。
在浏览器中选择活动者People,按下鼠标右键,在弹出的菜单中选择“OpenSpecification”,弹出图9所示的对话框。
图9绘制用例图之5
(11)从图9中可以看到People的版型(Stereotype)是Actor(以后还将介绍这个画面)。
(12)双击SelectCourse用例,弹出UseCaseSpecification对话框(见图10)。
图10绘制用例图之6
(13)在Documentation文本框中可以书写该用例的事件流(见图11)
图11绘制用例图之7
(14)完成以上步骤,可以看到Rose在浏览器中自动标出了各种关系。
图12中使用椭圆将它们标注出来。
图12绘制用例图之8
六、类图
选课系统的类图设计和实现
1类的创建
本实验先分析选课系统中的类,然后作出它们的类图。
1.1选课系统中的类
分析系统中的所有序列图,除了角色之外,有以下名词:
(1)课程。
(2)界面。
(3)控制对象。
这3个名词可以抽象出3个类:
课程类、界面类和控制对象类。
首先看课程类(Course)。
课程类应该有以下属性:
(1)课程名称(name)
(2)开课教室(classroom)
(3)课程号(courseID)
(4)授课教师(teacher)
(5)选课的学生(students)
(6)开课起始时间(firstlessondate)
(7)允许选课的学生人数(maxstudents)
(8)设置课程名称(setname)
(9)设置开课教室(setclassroom)
(10)设置课程号(setcourselD)
(11)设置授课教师信息(setteacher)
(12)设置开课起始时间(setfirstlessondate)
(13)设置允许选课的学生人数(setmaxstudents)
(14)查询课程名称(getname)
(15)查询开课教室(getclassroom)
(16)查询课程号(getcourselD)
(17)查询授课教师信息(getteacher)
(18)查询开课起始时间(getfirstlessondate)
(19)查询允许选课的学生人数(getmaxstudents)
关于界面类和控制类,因为涉及到后续的内容,所以本实验暂时不考虑它们。
根据以上的分析,可以绘制出如图2所示的类图。
图2选课系统的完整类图
1.2类图的创建
在下面介绍在Rose中创建Course类的过程。
(1)选择浏览器中的“LogicalView”,按F鼠标右键,在弹出的菜单中选择“New”,再在下一级菜单中选择“Class”,创建一个新的类,然后将这个类的名字改成“Course”,结果如图13所示。
图13绘制类图之1
(2)添加属性。
在浏览器中选择类“course”,按下鼠标右键,在弹出的菜单中选择“New”,再选择“Attribute”,则一个新的属性被添加,将属性名字改成“Name”,如果如图14所示。
图14绘制类图之2
(3)选择name,按下鼠标右键,选择“openSpecification”,则弹出如图15示的“ClassAttributionSpecification”对话框。
在这个对话框中有两个选项卡,一个用来设置属性的固有特性,比如类型(Type)、版型(Stereotype)、初始值(Initial)、存取控制(ExportControl)等,一个用来进一步指定属性是静态(Static)的还是继承(Derived)的等。
图15绘制类图之3
(4)图16所示为设置属性的类型(Type)示意图。
同样可以设置初始值(Initial)和存取控制(ExportControl)等。
图16绘制类图之4
(5)图17给出进一步设置属性的示意图。
图中将“Containment”设置为“ByValue”
属性的“Containment”特征表示属性如何存放在类中。
Byvalue表示属性放在类中,By
reference表示属性放在类外,类指向这个属性。
Unspecified表示还没有指定控制类型,应在生成代码之前指定Byvalue或Byreference。
图17绘制类图之5
(6)如果要删除属性,右键选择属性,在弹出的菜单中选择“Delete”即可。
(7)添加操作。
在浏览器中选择类“Course”,按下鼠标右键,在弹出的菜单中选择
“New”,再在F一级菜单中选择“Operation“,则添加一个新的操作。
图18是将添加操作的名字改为“GetName”的示意图。
(8)选择GetName,按下鼠标右键,选择“OpenSpecification”,在弹出的对话框中可以设置操作的固有特性。
如图19所示。
(9)在Specification对话框中,操作或者属性都有存取控制的选项,操作的存取控制的选项默认值是公有的,属性的存取控制的选项默认值是私有的。
不同的存取控制采用不同的标记表示(如图20所示)。
本图只是说明不同的控制标记,后面的图将按照实际要求设计。
(10)重复以上步骤,完成Course类的设计。
图21是设计结果图
图18绘制类图’之6
图19绘制类图之7
图20绘制类图之8
图21绘制类图之9
类能实现对象的封装,是面向对象的重要特征。
通过第一部分的学习,应该能够了解类、对象、属性、操作的概念,可以从一类单一的对象中抽象出类的定义,并依据实际要求,设计类的属性和操作。
2类的继承
在选课系统中,涉及到的用户包括管理员(Registrar)和学生(Student),其主要特征相似,所以可以建立统一基类People,而Registrar和Student则由People派生。
2.1在角色或类之问添加继承关系很简单,下面给出实现过程。
(1)双击浏览器中LogicalView:
的Main图标,弹出类图窗口,从UseCaseView下将People、Registrar和Student拖到窗口中。
图22
图22绘制类图之10
(2)选择类图工具栏的“Generalization”图标,在类图窗中,按下鼠标左键,将光标从角色Student移动到People,如图22所示,在二者之间出现一个表示继承关系的箭头标志。
同理添加Registrar与People之间的继承关系。
(若用例图中已画则会自动生成)
(3)如图23所示,给People增加一私有属性name,这时Registrar和Student都没有设置属性。
在类图窗口中双击Student的图标,弹出“ClassSpecification”对话框,点击Attributes选项卡,注意这时Showinherite被选择,而Attributes列表中没有任何属性。
从图中可以看到,父类中的私有属性没有被继承。
图23绘制类图之11
(4)将People的name属性设置成保护属性,操作同(3),可以看到Showinherite被选择时,Attributes列表中有一个属性name(见图24),父类中的保护属性被子类继承。
图24绘制类图之12
(5)将People的name属性设置成公有属性,操作同(3),可以看到Showinherite
Attributes列表中有一个属性name(见图13),父类中的公有属性被子类继承。
图25绘制类图之13
继承是面向对象的重要特征之一,通过继承,可以创建事务的层次分类。
可以首先定义
一个具有广泛意义的类,然后从它进行派生,添加一些具有特定特征的类。
当一个类是另外一个类的特殊情形时,可以考虑引入继承关系。
父类的属性和操作,只有当存取控制是公有和保护型时,才能被继承。
私有属性和操作不能被子类继承。
3.类的关联
可以使用下列的指导方针列出暂时性的关联关系:
(1)动词与介词词组。
(2)两个或两个以上的类有相依赖的关系,就可能有关联。
(3)隐含的关系。
(4)一般的常识。
然后依据以下的规则去除假性的关联:
(1)如果有一类别被去除,则与之相关的关联也应去除。
(2)现在不考虑与外界领域的关联或是实现时才会产生的关联。
(3)关联是说明结构的属性而不是在说明事件。
3.1选课系统的关联关系分析
在选课系统中设计了以下类:
1)界面FormObiect.
2)控制对象ControlObject。
3)课程Course。
设计了以下角色:
1)学生Student。
2)管理员Registrar。
3)学生和管理员的父类People。
4)数据库Database。
这些类和角色之间的关系如下:
1)角色Student和Registrar从People派生。
2)学生、管理员在与系统交互时,都有一个界面与之对应。
3)一个界面可能和课程相关(O-多门)。
4)控制对象负责课程的处理,处理结果在界面上显示。
5)控制对象完成对数据库的操作。
6)界面请求控制对象的服务。
依据以上分析,画出简略的类关系图。
进一步分析如下:
(1)一个用户界面对象和O个或多个学生相关。
(2)一个用户界面对象和0个或多个管理员相关。
(3)一个用户界面对象和O个或多个课程信息相关。
(4)一个控制对象和0个或多个课程信息相关。
(5)一个用户界面对象和一个控制对象相关。
(6)一个控制对象和一个用户界面对象相关。
更加详细的类图如图26所示,类的属性和操作请参见上面。
图26详细的类图
3.2选课系统中的类、属性和操作
总结一下选课系统中定义的类、类的属性和操作。
到目前为止,选课系统中自定义的类共有7个,如表1所示。
仔细分析系统的需求和前面的设计,可以得到每个类的属性和操作。
下面对它们分别予以说明。
(1)类People定义的属性和操作如图27所示,说明见表2。
图27绘制类图之14
(2)类Student的属性和操作如图27所示,说明见表3。
图27绘制类图之15
因为student是从People继承的“ClassSpecification”对话框中,选择“Showinherite”,属性和操作显示如图28所示,从中可以看到它从People中继承的属性和操作。
图28绘制类图之16
(3)类Registrar的属性和操作如图29所示,说明见表4。
图29绘制类图之17
因为Registrar是从People继承的“ClassSpecification”对话框中,选择“Showinherite”,属性和操作显示如图30所示,从中可以看到它从People中继承的属性和操作。
图30绘制类图之18
(4)类DataBase的属性和操作如图31所示,说明见表5。
图31绘制类图之19
(2)类ControlObject的属性和操作如图32所示,说明见表6。
图32绘制类图之20
(3)类的Course的属性和操作如图33所示,说明见表7。
图33绘制类图之21
(7)FormObject的属性和操作如图34所示,说明见表8。
图34绘制类图之22
DisplayCourseList()是重载函数
3.3关联关系的创建
前面介绍了类的创建,现在介绍类图的创建。
操作步骤如下:
(1)在“课程设计”模型的LogicalVieW中,选择“Main”类图,将上节中定义的类或角色从浏览器中拖至“Main”类图窗口,详情见图35。
图35绘制类图之23
(2)在类图的工具栏中选择“Createsaunidirectionalassociation”图标,在类图窗口中,按下鼠标左键,从student指向FormObject,则在student和FormObjeet之间添加了关联,然后调整一下类的位置。
如图25,为了显示方便,将类的属性和操作的“ShowAllAttributes”和“ShowAllOperations”设置为不选,将类的属性和操作隐藏起来。
图36绘制类图之24
(3)可以给新添加的关联命名。
在类图窗口中,选择student和FormObject之间的关联,
按下鼠标右键,在弹出的菜单中选择“OpenStandardSpecification”,弹出如图37所示的对话框。
图37绘制类图之25
(4)在该对话框中可以设置关联的属性。
关联两端的对象,箭头指向的称为“RoleA”,另一端称为“RoleB”。
如图38所示,可以将RoleA记作“theFormObject”。
图38绘制类图之26
(5)如图39所示,在“AssociationSpecificafiFor…”对话框中点击“RoleBDetail”选项卡,将Multiplic设置成l,再点击“RoleADetail”选项卡,将Multiplic设置成0..n。
(6)同理,将Student设置为1,设置完成后,类图变成如图29所示的形式。
图39绘制类图之27
图40绘制类图之28
现在使用图30和图40来说明如何在类图中添加及修改聚合关系。
图29建立一个新的和选课系统无关的类text,并假设一个界面对象中有0至多个text对象,则界面类和text类之间存在聚合关系。
选择FormObject和text之间的关联,按下鼠标右键,在弹出的菜单中选择“OpenSpecification”,则弹出“AggregationSpecificationFor…”对话框,点击“RoleBDetail”选项卡,如图29所示,将对话框中的Aggregate项选中。
图41聚合关系的建立
将图41中的Containmentoftext设置为ByValue,按下“Apply”按钮,类图中聚合的标记变成图42所示的组合的标记。
图42组合关系的建立
(7)回到图40,使用图40和图41所示的方法,完成如图43所示的选课系统的完整类图。
图43系统类图
小结
用例描述用户使用系统时从头到尾的一系列事件,它展现和暗示了系统的需求。
UML中使用用例图来组织用例。
本实验介绍了用例图及其所涉及的概念,包括:
(1)用例。
(2)活动者
(3)事件流
(4)用例和用例之间、用例与活动者之间、活动者与活动者之间的关系。
(5)最后,还介绍了在Rose中用例图的创建方法。
现实世界中的对象存在各种各样的关系,分析这些关系,主要有:
(1)继承关系。
继承反映了自然界中特殊和普遍之间的关系,用它可以模拟客观世界。
利用继承很容易在原有类上增加新的东西。
(2)类之间的关联。
关联关系描述了给定类的对象个体之间的语义连接,是两个类或多个类之间的一个关系。
连接是关联的一个实例。
聚合是表达主体部分关系的关联,组合是关
联的更强的形式。
聚合和组合是关联的特殊形式。
本实验介绍了类的属性、操作,继承和类之间的关联、聚合、组合关系,它们的UML表示方法,绘制了选课系统的完整的框图。
实验二UML序列图和协作图
一、实验目的:
1)能够掌握两种交互图的相同点和区别。
2)能够根据事件流,准确确定对象,画出序列图和协作图。
3)熟悉使用Rose软件创建两种交互图。
二、实验要求
掌握两种交互图即序列图和协作图的概念和组成,掌握通过交互图显示对象之间的关系和对象之间处理的消息来建模系统的动态特性。
三、实验内容:
通过选课用例(selectCourse)为例,来学习序列图和协作图的设计和实现。
四、实验步骤
1)分析选课事件流;
2)用Rose创建selectCourse序列图
3)用Rose创建selectCourse协作图
五、序列图
一旦定义了一个工程的用例,就可以用它们来指导对系统的进一步开发。
用例的实现描述了相互影响的对象的集合,这些对象将支持用例所要求的功能。
系统用例的实现,是从外部给视图转到内部结构的第一步。
UML中,用例的实现用交互图(interactiondiagram)来指定和说明。
交互图通过显示对象之间的关系和对象之间处理的消息来对系统的动态特性建模。
有两种交互图:
序列图(sequencediagram)和协作图(collabordiagram)。
本实验介绍序列图和协作图及其实现。
本实验主要以选课系统中的选课用例(selectCourse)为例,来学习序列图和协作图的设计和实现。
为了使问题更简单一些,不考虑学生的登录。
假设学生已经成功登录系统,选课的事件流如下:
(1)学生进入选课主界面。
(2)学生点击选课。
(3)系统显示所有课程信息。
(4)学生选择课程。
(5)系统验证课程是否可选。
A1:
课程不可选.
(6)系统提示课程选择成功,提示学生交费。
(7)用例结束。
A1课程不可选
(1)系统提示课程不可选及原因。
(2)学生重新选课。
(3)重新验证直至成功。
(4)转选课事件流第6步。
序列图描述的是对
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- UML 软件 建模 实验 指导书