uml实验报告89.docx
《uml实验报告89.docx》由会员分享,可在线阅读,更多相关《uml实验报告89.docx(22页珍藏版)》请在冰豆网上搜索。
uml实验报告89
《面向对象与UML》
实验报告
姓名:
左志伟
学号:
133037
班级:
软件132
一、基本目的
面向对象与UML是以介绍面向对象的统一建模语言UML为主,使学生了解面向对象技术的相关概念,熟悉UML分析和设计的基本方法,同时掌握在RationalRose环境下使用UML建模语言进行软件模型分析和设计的相关技术。
本课程的实验课程是UML程序设计教学的重要技能环节。
通过实验,使学生加深理解、验证、巩固课堂教学内容,提高学生使用UML建模语言进行软件设计分析的能力,实验课程重点培养学生在Rationalrose环境下对UML4种视图以及9种图的使用。
二、实验环境
使用IBMRationalrose7.0集成开发环境。
三、实验要求
1.每人独立完成实验和实验报告。
每个实验包括多个实验题目,要求每个实验在规定时间内设计完成所有实验题目,并按照要求提交实验报告。
2.预习实验指导书有关部分,认真做好实验内容的准备,就实验可能出现的情况提前进行思考和分析。
3.遵守机房纪律,服从辅导教师指挥,爱护实验设备。
4.实验课程不迟到。
如有事不能出席,需请假。
四、实验内容
表1实验内容及时间安排
序号
实验内容
参考实验课时数
计划开设周次
实验1
UML建模基础
2
5
实验2
用例图
2
6
实验3
类图
4
7,8
实验4
顺序图
2
9
实验5
协作图
2
11
实验6
状态图
2
12
实验7
活动图
2
14
实验8
组件图与配置图
2
15
实验9
双向工程
2
16
合计
20
五、实验报告
每人针对每个实验提交一份实验报告。
实验报告主要包括四方面内容:
1.实验目的:
该实验需要学生掌握的内容。
2.实验题目:
实验题目具体内容。
3.实验结果:
利用Rationalrose得到的建模结果。
实验八组件图与配置图
一、实验目的
1.了解组件的概念以及引入组件的原因。
2.掌握组件的要素,组件和类的比较。
3.掌握UML中组件图配置图的图形元素。
4.掌握阅读和绘制组件图和配置图的方法。
5.了解组件图和配置图的应用。
二、实验内容
1.根据要求绘制组件图。
分析:
在LSTC的图书馆管理系统中,通过分析可以发现类图中的类应分为4个部分:
(1)用户接口模块(UI),主要负责系统和用户的交互,包括Frame类,Dialog类等。
(2)业务对象模块(BO),主要负责处理系统中的业务计算,如借书,还书等功能的具体操作。
(3)数据存储模块(DB),主要负责处理对数据的存储。
(4)通用工具模块(UTIL),包括系统中通用函数。
通过一个主程序StartClass来启动。
由于系统中的类较多,这里以业务对象模块(BO)为例来讲解如何创建组件图,BO模块中包括:
Item类:
书目类,表示一本(不是一种)实际存在的书籍或杂志;
Loan类:
借书业务类,将借阅者和图书馆关联起来,一个Loan对象表示借出的一本书;
BorrowerInfomation类:
借阅者信息类,表示一个借阅者;
Title类:
表示一种书或一种杂志。
如《C++编程思想》就是一种书,用1个title对象表示,如果有2本这样的书,则需要用2个Item对象表示;
Reservation类:
预定信息类,表示一个预定信息。
Item类和Loan类之间互相依赖,Loan类和BorrowerInfomation类之间互相依赖,BorrowerInfomation类和Reservation类之间互相依赖,Reservation类和Title之间互相依赖,Title和Item类之间互相依赖。
绘图步骤:
(1)在组件视图中双击Main图,出现图1,为编辑组件图做好准备,这时绘图工具栏中的图标如图中椭圆所示。
图1
(2)在组件视图中,从工具栏中选择MainProgram图标,在右边的绘图区中添加一个新组件,并取名StartClass.java表明新增一个主程序。
图2
(3)选择新创建的组件点击鼠标右键,在弹出的菜单中选择“OpenSepcification”,如图3。
图3
(4)在对话框中,可以修改组件的名称,设置组件的类型,指定实现的语言。
这里新组件的名称定为“StartClass.java”,组件构型为MainProgram(Rose中提供了多种构型),实现语言为JAVA(Rose中默认的是分析语言Analysis),修改结果如图4所示。
图4
(5)组件图描述的是系统的实现视图,因此要指定实现组件功能的文件。
点击File选项卡,在列表框中点击鼠标右键,在弹出的菜单中选择“InsertFile”,弹出文件对话框。
在对话框中,键入StartClass.java,点击“打开”按键,这时对话框如图5所示。
图5
(6)双击StartClass.java,弹出是否创建对话框,询问是否创建文件,选择“YES”,弹出记事本,这时可输入相应的源程序(注意:
如果这里选择的文件已经存在,则不会弹出创建文件对话框,而是直接显示相应文件内容)。
(7)创建相应的包。
选择包图标,在右图中创建。
这里同样需要对每个组件打开“OpenSpecification”对话框,设置具体的属性,对“包”组件来说需要在Files选项卡中指明与其对应的目录。
创建完毕的组件图如图6所示。
图6
(8)选择业务对象包(BO),双击,打开业务对象包的详细组件图,这里根据分析的结果分别创建Title.java,Item.java,Loan.java,BorrowerInfomation.java,Reservation.java组件,并设置好每个组件的构型和对应的文件。
创建好的BO包组件图如图7。
图7
(9)创建依赖关系。
在本节前述一段中,已经描述过各个类之间的依赖关系,依赖关系使用虚线表示,因此根据分析中的结果,在图中将相互依赖的组件连接即可。
完成后的组件图如图8。
图8
2.绘制图书管理系统部署图
分析:
图书管理系统中,对于“借书、还书”等基本功能和“书目维护、读者信息维护”等信息维护功能来说,是在图书馆内部发生的,并且客户端的数量有限,由于其使用频率较高,故效率和使用的方便性需要侧重考虑,而客户端软件的维护工作量相对较少,则可以不用考虑,因此这部分业务将采用传统的C/S架构;对于图书的查询和预定功能来说,我们希望在整个校园网内提供这些功能,所以这部分业务我们将会采用B/S架构,这样将会使得读者在校园网的任何地方都能使用,且能简化系统的部署和维护。
基于上述考虑,该系统将由5个节点构成:
应用服务器、数据库、Web应用服务器、基本业务服务器、信息维护服务器。
(1)应用服务器,其类型是Processor,负责整个系统的总体协调工作。
(2)数据库,其类型是Device,负责数据管理。
(3)Web应用服务器,其类型是Processor,负责读者网上查询和预定业务。
(4)基本业务服务器,其类型是Processor,负责处理读者借书和还书等一些基本的业务流程。
(5)信息息维护服务器,其类型是Processor,负责系统基本信息维护的业务流程,如:
书目维护、读者信息维护等。
绘制步骤:
(1)建立图书管理系统模型文件。
(2)导航窗口中双击“DeploymentView”,在绘图窗口中打开如图9所示部署图。
图9
(3)添加Processor主机节点:
如图10所示,选择部署图工具栏的“Processor”图标,在右边的绘图窗口中添加一个Processor,鼠标右击新加的Processor,选择菜单项“OpenSpecification”,打开Processor的设置对话框,如图11所示。
在Name框中为该Processor命名:
ApplicationServer”,点击OK按钮即可完成该物理节点的设置。
图10
图11
(4)添加Device数据库节点:
如图6.19所示,选择部署图工具栏的“Device”图标,在右边的绘图窗口中添加一个Device,同设置Processor类似,为该Device命名:
Database,完成后,绘图窗口如图12所示。
图12
(5)添加连接:
如图13所示,选择部署图工具栏的“Connection”,在右边的绘图窗口中为“应用服务器节点”与“数据库节点”添加连接。
图12
(6)重复步骤(3)和(5),添加其余的三个服务器节点,并为它们添加连接,完成后如图13所示。
至此,部署图完成,保存模型文件为“图书管理系统.mdl”即可。
图13
3.下图是对callcenter.exe的结构进行组件建模的结果,请说明该图所表示的含义。
Callcenter.exe依赖配置文件config.ini、数据库shp_a3.dll和数据库sh_ttsu.dll;数据库sh_ttsu.dll依赖shp_a3.dll和Libtts.dll数据库。
数据库shp_a3.dll的版本号为4.6.0.6.
4.绘制网络订餐系统的部署图(客户端可以为PC或者手机)。
实验九双向工程
一、实验目的
1.理解双向工程的基本概念。
2.利用Rose正向工程工具生成代码框架。
二、实验内容
1.根据要求完成正向工程代码框架。
使用Rose工具将设计的模型通过正向工程生成代码框架。
按照使用Rose工具生成代码的5步基本步骤可以顺利的完成代码框架的生成工作。
(1)创建模型;
(2)创建组件;
(3)将类映射到组件;
(4)设置代码生成属性;
(5)生成代码。
步骤:
(1)浏览窗口中选择“LogicalView”,建立如图9.所示的类图。
图9.1建立类图
(2)用People类为例实现正向工程,首先在左边的工具栏组件视图内建立一个组件,并命名为People。
图9.2建立组件
(3)将已经建立好的People类拖动到组件中,或者选中组件邮件选择OpenSpecification,在Realizes选项卡中选中People类,邮件选择Assign完成映射,具体流程如图9.3。
图9.3
图9.4为映射完成后显示的图标。
图9.4
(4)完成上述设置后,选择组件邮件选择OpenSpecification,在General选项卡中设置Language,设置为ANSIC++,如图9.5。
图9.5
(5)完成上述操作后右键单击组件,选择“ANSIC++”,,然后选择“JANSIC++”菜单中的“GenerateCode“,弹出界面进行生成代码路径的设置,见图9.6,设置好路径后点击OK。
图9.6
(7)点击OK后弹出如图9.7的对话框,选择SelectAll,再点击OK,即可生成相应代码框架。
以下为生成的代码框架:
头文件:
#ifndefPEOPLE_H_HEADER_INCLUDED_AA7FAB84
#definePEOPLE_H_HEADER_INCLUDED_AA7FAB84
//##ModelId=5580331B01B0
classPeople
{
public:
//##ModelId=55803376039F
StringGetName();
//##ModelId=558033960079
voidSetName(stringargname);
//##ModelId=558033A6038C
voidSetAge(IntegernAge);
//##ModelId=558033D20151
IntegerGetAge();
private:
//##ModelId=5580333401DE
stringname;
//##ModelId=55803348004B
Integerage;
//##ModelId=5580335C0191
stringmajor;
};
源文件:
#include"People.h"
//##ModelId=55803376039F
StringPeople:
:
GetName()
{
}
//##ModelId=558033960079
voidPeople:
:
SetName(stringargname)
{
}
//##ModelId=558033A6038C
voidPeople:
:
SetAge(IntegernAge)
{
}
//##ModelId=558033D20151
IntegerPeople:
:
GetAge()
{
}
2.根据如下C++代码框架绘制类图。
classStudent
{
stringname;
intnumber;
intage;
public:
intGetNumber();
intGetAge();
stringGetName();
SetName(stringa);
SetAge(intb);
SetNumber(intc);
}