火龙果UML实验指导书教材.docx
《火龙果UML实验指导书教材.docx》由会员分享,可在线阅读,更多相关《火龙果UML实验指导书教材.docx(34页珍藏版)》请在冰豆网上搜索。
火龙果UML实验指导书教材
UML建模语言
实验指导
前言
UML建模语言用于对软件密集型系统进行可视化、详述、构造和文档化,也可以用于业务建模及其他非软件系统的建模。
目前,UML已成为被广泛公认的工业标准,拥有越来越多的用户。
继Smalltalk-80之后,20世纪80年代有一大批面向对象编程语言问世,标志着面向对象方法走向成熟和实用。
面向对象方法也不再局限于面向对象编程,开始在系统设计阶段延伸,出现一批早期的面向对象的设计方法。
到20年代末期,面向对象方法的研究重点转向面向对象的分析,并将OOA与OOD密切联系在一起,出现了一大批面向对象的分析和设计方法。
目前,大多数成熟的软件开始组织已经从分析、设计到编程、测试全面地采用面向对象方法,是面向对象毋庸置疑地称为当前软件领域的主流技术。
UML是在多种面向对象分析与设计方法相互融合的基础上形成的,UML的出现使面向对象建模概念的表示法趋于统一和标准化。
所以学习UML建模语言,对于掌握和理解面向对象技术,学习面向对象分析、设计和编程非常重要。
为了达到这些目标,结合自己一些学习UML的教学经验,编写本教程。
本教程通过对一个餐馆系统进行面向对象分析、设计和实现的过程并在这个过程如何应用UML进行了一个示范。
实验内容共有8次,分别是建模工具的使用、系统的需求分析与用况建模、建立系统的领域模型(分析类图)、建立系统的分析模型(交互图)、建立软件体系结构、建立系统的设计模型(设计类图和交互图,分2次实验4个学时完成)、面向对象系统的实现。
整个开发过程采用迭代的开发过程。
因编者的经验、水平和写作时间限制,书中难免有疏漏、不妥和错误之处,欢迎读者批评指正。
祝学习愉快!
目录
一建模工具的使用4
二建立用况模型14
三建立领域模型24
四建立分析模型28
五建立软件体系结构31
六建立设计模型32
一建模工具的使用
1.实验目的
(1)熟悉建模工具staruml的环境
(2)使用建模工具建立简单的模型
2.实验类型:
验证型
3.实验学时:
2
4.实验原理和知识点
(1)实验原理:
StarUML(简称SU),是一种创建UML类图,并能够自动生成Java的“stubcode”的工具。
SU也可以做JAVA逆向工程,以产生相应的UML图表。
在本次实验中,我们将使用SU建立工程,设计一个pizza饼的模型,创建UML图。
SU可以生成反映类结构的代码。
(2)知识点:
StarUML、JAVA、UML图、工程、模型
5.实验环境(硬件环境、软件环境):
(1)硬件环境:
IntelPentiumIII以上CPU,128MB以上内存
(2)软件环境:
StarUML
6.实验内容:
(1)StarUML安装、启动。
(2)建立新工程和模型
(3)创建UML图
(4)创建类、属性、行为和关系
7.实验任务
1.综述:
StarUML是一种生成类图和其他类型的统一建模语言(UML)图表的工具。
这是一个用Java语言描述的创建类图的简明手册。
StarUML(简称SU),是一种创建UML类图,并能够自动生成Java的“stubcode”的工具。
SU也可以做JAVA逆向工程,以产生相应的UML图表。
在本教程中,我们将使用SU设计一个pizza饼。
执行下列步骤,可以创建如下面所示的UML图。
SU可以生成反映类结构的代码,而不是任何对象的具体行动。
因此,在使用SU创建图表后,你会为此stubcode添加剩余的功能性代码,填写每种方法本来应该做的事。
2.安装:
首先,我们必须先安装将要使用的软件。
StarUML,是一个开放源码软件,遵循GPL协议许可(GNU公共许可证),并免费提供下载。
3.启动
安装以后就可以启动该程序。
4.添加新工程
然后,一个名叫:
NewProjectByApproach的对话框会弹出。
选择“EmptyProject”并且按下"确定"。
这里建议你不要勾选"设置为默认的做法"复选框。
4.选择模型
在右边的“ModelExplorer”框中选定“Untitled”模块。
5.添加模型
通过“Model”主菜单,或右击选定的模型,可以"Add/DesignModel"
6.添加类图
通过“Model”主菜单,或右击选定模型,可以“AddDiagram/ClassDiagram”:
7.设置profile
通过“Model/Profile...”菜单去设置工程所需的profile。
这决定了工程所使用的规则和约定。
一定要包含"JAVAPorfile"这一项目。
8.保存工程
立即就保存工程,这样在出现问题的时候,您就不会丢失信息。
从“File”菜单,选择“Save”,并选择一个地方以保存工程。
你的StarUML项目现在应该看起来的是这样的:
9.创造图表
现在,开始真正创造图表,从默认就在屏幕的左边的“Toolbox”选择“类”图标,然后左键单击diagram窗口的某处。
这样就使用通用名字创造了一个新的类。
双击,将类改名为Circle。
10.添加属性
右击图中的目标,在弹出菜单中选择“Add”中的“Attribute”(被标示为绿色),为其添加一个属性(或者域),填入期望的名字“_radius”。
具体的数据类型,在属性面板(右下侧的窗口),由双打字,在"类型"时段。
在窗体右下边的Properties面板中,找到“Type”输入框,输入double作为_radius属性的类型。
类的内部数据(域/属性)都是私有的,因为他们是严格由类内部使用的。
所以,在Properties面板中将_radius设置为“私有”。
11.继续进行设计
重复同样的过程,添加所谓的名字叫做Rectangle的类和double型的私有成员_width和_height。
12.创造IShapeinterface
从toolbox中,选择“Interface”,并点击图表的某处。
将其改名为IShape。
创建以后,选中它。
在顶部工具栏,选择“StereotypeDisplay”下拉按钮,将值改变为“None”。
这将改变以往的圆形形状,使其变为成长方形。
还是在顶部工具栏,取消选中"SuppressOperations"。
这将使我们能够看到接口所拥有的方法。
●向IShape接口添加返回值为double的getArea方法。
⏹可以通过右击interface的图标,在弹出菜单中点击红色的“Operation”按钮,然后输入getArea。
⏹设定返回值类型。
在“ModelExplorer”中展开IShape节点,右击你刚刚创建的getArea方法,并选择“AddParameter”。
在“Properties”框中,将参数的名子变为空,将“DirectionKind”变为“RETURN”,将“Type”变为dboule。
●将IShape和getArea的IsAbstract属性框打上勾,他们在图标上的名字将变为斜体。
这是UML的标准,表示这是接口或者其他纯虚实体。
13.添加类和接口的关系
●可以通过从toolbox中选择表示“Realization”的箭头,并从Circle拖拽向IShape,使Circle实现接口IShape。
重复同样的过程,为Rectangle添加实现关系。
这是添加了Circle和Rectangle对于IShape接口的实现关系。
⏹如果想使连接线表现为直角的方式,右击连接线,并选择"Format/LineStyle/Rectilinear"菜单。
你通过这种方式,使箭头重叠在一起,可以使你的图看起来更整洁。
14.添加类基于接口的行为
●由于Circle和Rectangle类都实现了IShape接口,就必须有同样的行为(方法)。
⏹在“ModelExplorer”面板中,复制getArea法(按Ctrl-C或者右键点击并选择Copy菜单),并粘贴到Circle和Rectangle类。
⏹这些实现了的方法在Circle和Rectangle类中都不是抽象的,而是具体的。
这是因为他们实际上是执行一些特定行为(例如,为一个圆形和长方形分别计算面积),所以不要勾选IsAbstract框。
15.你的图现在应该是这样的:
16.添加Pizza类
●向Pizza添加double型的私有域_price。
●添加返回double类型的共有操作getPrice。
17.为Pizza类添加IShape的引用
●从toolbox中选择"DirectedAssociation"箭头,点击Pizza类,并向IShape拖拽。
⏹选中箭头,在右边的“Properties”框上,将name一栏改为“has-a”,“End1.Aggregation”一栏改为“AGGREGATE”(这个图示说明Pizza和shape对象是“聚合“的关系)。
⏹将“End2.Name”一栏改为_shape。
这样就自动为Pizza添加一个名字为_shape,使用IShape接口的私有域,的所谓_shape型ishape以pizza饼。
⏹将“End2.Visibility”改为私有。
●为_shape创建一个“获得者”方法,名字叫做getShape,返回IShape。
这就是创建一个行为,名字是getShape,返回IShape。
18.为pizza类添加构造函数
●为Pizza添加构造函数,右击,在弹出的“Add”菜单中选择“Operation”。
从这里,增加一个普通的带有dboule型price参数和IShape类型shape参数的操作
●增加一个输入参数,就像之前增加了一个返回型的输出参数一样,你指定的参数的名称,如价格和形状等,以及适当的数据类型。
●为Circle增加一个带有double型的radius参数的构造函数。
●为Rectangle增加一个带有double型width和height参数的构造函数。
19.你的图现在应该是这样的:
20.添加Test_Pizza类
为了说明UML类图更多的功能,又增加了一个叫做“Test_Pizza”的类,它用作测试目的,并使用到Pizza和IShape类。
●两个类之间的关系有多种形式。
举例来说,一个类可以实例化另一个类,而不是将其作为一个成员。
又或,一类的方法可能需要另一个类作为输入参数,保留一个引用仅仅是为这个方法的执行。
●通过从toolbox中选择“Dependency”箭头,从一个类拖向他所以来的类,来添加不通类之间的依赖关系。
在这个例子中,Test_Pizza依赖于Pizza,Circle和Rectangle类,因为它实例化了它们。
●从Propertiesbox选择name属性,或者双击图表上的“依赖线”,可以为依赖关系添加标签。
特别的是,当一类实例化另一个类,我们会把依赖线叫做“instantiates”。
●你可以选中并拖动依赖线的标签,以达到更美观的效果。
●依赖关系不会影响代码生成。
21.你的图现在应该像本文最开始所示。
22.对你的图随意做些修改。
你还可以拖动你的类图,并且使箭头以不通的方式展示(使箭头显示为直线,选择一个箭头,右击它,弹出菜单中选择“LineStyle”,并选择“Rectilinear”)。
你一定要体验这个工具,并去了解它。
23.保存项目
在“File”菜单中,选择“Save”。
SU的所有资料只有一个单一的项目文件,所以你目前应该只有一个文件生成。
24.导出
将图表导出为其