湖南大学系统分析与设计实验指导书(UML)_第1页
湖南大学系统分析与设计实验指导书(UML)_第2页
湖南大学系统分析与设计实验指导书(UML)_第3页
湖南大学系统分析与设计实验指导书(UML)_第4页
湖南大学系统分析与设计实验指导书(UML)_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE35V1.0面向对象的UML设计基础实验指导书(试用稿)编写:陈浩校核:_______湖南大学软件学院2004年9月UML实验指导书PAGE2湖南大学软件学院UML实验指导书湖南大学软件学院PAGEI目录《面向对象的UML设计基础》实验教学大纲 1实验一熟悉RationalRose建模环境 3实验二UseCase分析与设计 10实验三顺序图建模 16实验四类分析与包 22实验五设计类图与分析 26实验六构件图和部署图建模 30实验七状态图与活动图 33实验八UML与设计模式 37实验九数据建模 40实验十图书管理系统设计 49实验十一会议文件审批系统设计 50实验十二简易教务管理系统设计 51《面向对象的UML设计基础》实验教学大纲课程名称:面向对象的UML设计基础课程编号:本大纲主笔人:陈浩课程所占的学时、学分及实验课所占学时、学分总学时:32+32总学分:3实验课时:32实验学分:1二、实验适用专业:软件工程本科三、实验配套教材《UML与RationalRose从入门到精通》Boggs,W.著,邱仲潘等译,电子工业出版社,2003出版四、实验的任务、性质和目的1.通过实验加深对面向对象技术的认知和理解;2. 熟悉RationalRose等建模工具,较系统地掌握UML建模方法;3.培养学生综合运用软件工程理论进行系统分析和设计的能力。五、实验的基本理论自20世纪90年代以来,面向对象技术以其显著的优势成为计算机软件领域的主流技术。越来越多的软件企业认识到,要在激烈的市场竞争中立于不败之地,采用面向对象技术是势在必行的选择。软件行业需要大量掌握面向对象方法与技术的人才,这些人才不仅仅是能够使用一种或几种面向对象编程语言来编程,更重要的是能运用面向对象方法进行系统建模,即通过面向对象的分析(OOA)和面向对象的设计(OOD)建立系统的分析模型和设计模型。《面向对象的UML设计基础》课程是一门综合性、实用性很强的课程。通过本课程的学习,使学生能较熟练地掌握面向对象的基本理论,学会使用UML建模语言进行需求分析和系统建模设计;熟练掌握RationalRose等建模工具的使用方法。本实验部分结合课程教学,通过几个实际项目进行案例分析,引导学生较系统地掌握面向对象的系统分析和设计方法。六、实验方式与基本要求验证实验上机时按照实验步骤在实验室完成程序输入、编译和调试。综合性实验和设计性要求课前到机房预做,上课时进行编译、测试。验证性实验由教师检查通过即算合格,综合性实验和设计性实验必须经教师检查通过且提交源程序。七、实验项目的设置与内容提要序号实验项目课内/课外实验学时每组人数实验类型实验要求内容提要1熟悉RationalRose建模环境课内22-3验证必开安装RationalRose2003、熟悉RationalRose建模环境。2UseCase分析与设计课内42-3设计必开根据指定的用户需求描述分析Actor和UseCase3顺序图建模课内22-3设计必开根据指定的用例场景描述文档设计顺序图4类分析与包课内22-3设计必开分析类并发现类的职责5设计类图与分析课内22-3设计必开设计详细类图6构件图和部署图课内42-3设计选开根据指定的用例场景描述文档设计构件图和部署图7状态图与活动图课内42-3设计选开根据指定的需求描述文档设计状态图8UML与设计模式课内42-3验证选开验证几种典型的设计模式9数据建模课内42-3设计选开对象模型和数据模型的相互转换10图书管理系统设计课内82-3综合必开对图书管理系统建立完整的UseCase分析模型,完成其中至少三个模块的系统详细设计模型和部分实现代码11会议管理系统设计课外82-3综合选开对会议管理系统建立完整的UseCase分析模型,完成其中至少三个模块的系统详细设计模型和部分实现代码12简易教务管理系统课外42-3综合选开对简易教务管理系统建立完整的UseCase分析模型,完成其中至少三个模块的系统详细设计模型和部分实现代码八、考核方式与评分办法实验课分数占课程成绩的30%,其中:课堂实验:实验1-5和10为必开,6-9四个实验中选做1个,11和12两个实验中选做1个。其中前6个实验占实验成绩的10%,最后两个综合性实验占实验成绩的40%。考察每次实验结果时,必须考察3个方面:模型结构(40%)、功能实现(40%)、代码实现(20%)。

实验一熟悉RationalRose建模环境本次实验要求每个人都安装一遍RationalRose2003。实验目的:1.熟悉RationalRose的安装过程;2.熟悉RationalRose的建模环境。实验类型:验证性实验。实验设备和器材:PentiumII以上微机,Windows2000以上操作系统,RationalRose2003安装光盘一张。RationalRose安装的具体过程:第一块:熟悉RationalRose2003的安装。由于RationalRose的安装以及比较麻烦,所以通过安装RationalRose2003,并在安装过程中,发现一些问题,并解决和理解它。下面就开始介绍RationalRose2003的安装过程。打开光盘,双击RationalRose的安装图标,然后就会有如图1-1的界面,它是安装的开始界面,让你选择安装的路径。其默认路径是C:\ProgramFiles\RationalRoseEnterpriseEditionforWindows,你可以选择默认路径,也可以更改路径。

图1-1选择安装目录接下来,按Next键,进入下一个界面,如图1-2所示,就进入了安装的引导界面。按“下一步”键,进入下一个界面,如图1-3所示,第一个选项是“RationalLicenseSever”,是用来管理Rational产品的非固定的、用户命名的授权书序列号的。这个在安装的时候可以不安装,等安装完第二项后,我们再进行第一项的注册。第二个选项是“RationalRoseEnterpriseEdition”,这个是基于UML的,模型驱动的,为开发人员、建筑师和分析家提供的开发工具。RationalRoseEnterprise提供了可视数据模型的,有测试用例的支持平台。我们选择第二项进行安装。图1-2安装引导界面图1-3安装产品选择接下来如图1-4,是选择安装和配置开发方法的。有三个选项,第二个是不能选的,第一个是网络开发的,第三个是单机版的,我们选择默认选项,单击“下一步”。图1-4安装和配置开发方法接下来是安装选择“Iacceptthetermsinthelicenseagreement”,按“Next”键,就开始进入RationalRoseEnterpriseEdition的安装拷贝阶段。如图1-5显示,选择要安装的程序功能,默认选择是全部选取。我们在这里选择默认选项。然后按“接下来”按键,开始安装。这一步要花费较长时间。图1-6是安装拷贝文件过程中的界面。图1-5选择要安装的功能图1-6拷贝文件中接下来进入“LicenseKeyAdministratorWizard”,如图1-7所示,有四个选项:“PointtoaRationalLicenseSevertogetmyLicenses”;“ImportaRationalLicenseFile”;“Get,Return,orMoveKeys”;“EnteraTemporaryorEvaluationLicenseKey”。第一个填Rational服务器的名称;第二个是输入认证书的文件;第三个是获取,返回或者移动密钥;第四个是填入临时认证密钥。默认选项是第一个,我们选择默认选项。然后填上主机名(本机名),就可以了,如图1-8所示。图1-7认证书密钥向导图1-8填写服务器名称和端口号第二块:RationalRose2003的解密。过程如下:1.先用rational.exe,lmgrd.exe覆盖到你的安装目录的Rartional\common\下2.然后改license.dat里面的SERVERyourPCANYDAEMONrational"C:\ProgramFiles\Rational\Common\rational.exe"改成SERVER你的机器名ANYDAEMONrational"你的安装目录\rational.exe"3.将Flexlm.cpl拷贝到C:\winnt\system32\下,在控制面板里运行FlexLmLicenseManager,如图1-9所示。在Setup面板配置文件路径,lmgrd.exe->你的安装目录\Common\lmgrd.exeLicenseFile为你改过的license.dat4.在Control面板点击Start,如果成功的话点击Status按钮将显示你的机器名:licenseserverUP(MASTER)说明成功了如图1-10所示(主机名是localhost)。失败的话重启一下FlexLmLicenseManager就没问题了。5.如果弹出对话框LicenseKeyAdministratorWizard后,选定PointtoaRationalLicenseServertogetmylicenses,单击下一步,ServerName文本框中填写你的机器号(可能已经填好),单击完成。(成功的话会出现两屏的licenses)再次运行RationalRose就应该就没问题了。如图1-11所示。图1-9FLEXlmLicenseManager的配置图1-10运行licensemanager后的结果图1-11运行RationalRose2003的结果安装Rationalrose2003的实验到这儿就算完成了,接下来我们开始熟悉一下RationalRose的建模环境。RationalRose的建模环境:Rose是个菜单驱动应用程序,用工具栏帮助使用常用特性。Rose支持八种不同类型的UML框图:UserCase框图、Activity框图、Sequence框图、Collaboration框图、Class框图、Statechart框图、Component框图和Deployment框图。Rose界面的五大部分是浏览器、文档窗口、工具栏、框图窗口和日志,如图1-12所示。浏览器:用于在模型中迅速漫游;文档窗口:用于查看或更新模型元素的文档;工具栏:用于迅速访问常用命令;框图窗口:用于显示和编辑一个或多个UML框图;日志:用于查看错误消息和报告各个命令的结果。若要了解更详细的知识,请看教材。Rose模型的四个视图Rose模型的四个视图是:UseCase视图、Logical视图、Component视图和Deployment视图。各个视图的具体功能请参见教材。要想了解更多的关于RationalRose的应用,我们将在接下来的实验中分别向大家做介绍。图1-12RationalRose界面实验二UseCase分析与设计本次实验要求自己在现有的用例模型(Lab2-1.mdl)中,根据指定的用户需求描述分析Actor和UseCase,创建用例图。实验目的:熟悉RationalRose进行建模的一些基本操作;学会使用UseCase视图与UseCase框图;学习使用UseCase、角色与关系;学习在包中增加.txt文件。实验任务:在浏览器中增加UseCase框图;在新建的UseCase框图中增加角色;建模用例的事件流;增加文件。实验结果:(Lab2-1.1.mdl)创建了2个新的UseCase框图。具体的实现过程:Step1:首先打开目录Rose实验\Lab2-1.mdl,在浏览器中展开UseCaseView,展开UseCaseModel,双击框图GlobalViewofActorsandUseCases。图2-1创建UseCase图Step2:鼠标右键点击UseCaseModel,增加2个新的UseCaseDiagram,分别命名为:RealtorView和MaintainPersonalPlannerView。具体实现如图2-1、图2-2所示:图2-2新建UseCaseDiagram图2-3创建UseCase图Step3:在浏览器中双击RealtorView,打开RealtorView框图,同时将已经存在的Actor和UseCase依次拖入其框图中,并安排各个元素的位置。如图2-4所示:图2-4将Actor和UseCase拖入框图中Step4:按照Step3中同样的方法在浏览器中双击MaintainPersonalPlannerView,打开MaintainPersonalPlannerView框图,将现有模型中已经存在的Actor和UseCase依次拖入其框图中,并安排各个元素的位置。如图2-5所示:图2-5安排各个元素位置Step5:在UseCase中选择包,并加入新的UseCase事件流。包ApplyForLoan(ApplyForLoan.txt);包MaintainPersonalPlanner(MaintainPersonalPlanner.txt);包SearchForAHome(SearchForHome.txt);这3个txt文件均存在与\Rose实验,文件夹中。具体操作方法如下:右键点击ApplyForLoan包,选择New/File,打开ApplyForLoan.txt即可。按照同样的方法将其他2个文件加入到相应的包中。图2-6新建文件图2-7增加.txt文件Stpe6:按照上述同样的方法在UseCaseModel包中加入ProblemStatement.txt。图2-8在Use-CaseModel中增加FileStep7:保存新的mdl文件,取名为Lab2-1.1,下次实验将使用该文件。实验作业:增加系统用例模型包,UseCase框图、用例与角色;增加系统用例描述;增加系统角色描述。

实验三顺序图建模在这个实验中,根据指定的用例场景描述文档设计顺序图。实验目的:理解顺序框图的基本知识;了解对象与类的概念;学习顺序框图的创建。实验任务:在浏览器中增加顺序框图;在新建的顺序框图中增加角色;建模用例的事件流。实验结果:(Lab3-1.mdl)创建两个顺序框图。具体的实现过程:首先,介绍一下创建Sequence框图或Collaboration框图的步骤:·寻找对象·寻找角色·将消息加进框图Interaction框图包括Sequence框图和Collaboration框图。·寻找对象:研究事件流中的名词是寻找对象的好办法。确定对象时,应考虑一下几种类型:实体对象这些对象保存信息,最终可能映射数据库中的表和字段。边界对象这些对象位于系统与外部世界之间的边界上。换句话说,这是应用程序的窗体与窗口和其他应用程序的接口。控制对象这是可选对象,控制用例的流程。它们本身没有任何业务功能,但可以协调其他对象和控制总体逻辑流程。·寻找角色标识Interaction框图的对象后,下一步要表示所需的角色。Interaction框图中的角色是对事件流启动工作流的外部刺激。一个Interaction框图中可以有多个角色,每个在特定的情形中接受或发送系统消息的角色都在该情形的框图中显示。下面介绍一下Sequence框图工具栏中的按钮并一一介绍其作用。表3-1Table1Sequence框图工具栏图标图标按钮用途SelectsorDeselectsanItem将光标返回箭头以选择项目TextBox将文本框加进框图Note将说明加进框图AnchorNotetoItem将说明连接到框图中的项目Object将新对象加进框图ObjectMessage在两个对象之间绘制信息Messagetoself画出反身消息ReturnMessage返回消息完成下面的一个用例的Sequence框图。看下面的维护个人计划用例说明书,来设计一个基本的用例流程。注意:你已经为这个用例添加了分析类。同时,参与者在用例模型中也已经存在。1主要描述这个用例允许潜在的购买者设立帐号,存储房子的优先选择信息、合约信息,以及其它的经济和个人信息,这样可以帮助潜在的购买者在网上找到房子。事件流程2.1基本流程这个用例是在潜在客户选择创建个人计划书的时候开始的。这个系统要求,如果一个潜在的购买者还不存在的话,就创建一个新的文件,如果文件存在,那么客户就允许登录系统。系统会提示客户创建一个新的文件,文件信息包括:名字、e-mail地址、密码和一个通过e-mail接受市场信息的偏好。系统为客户创建一个用户文件,用客户的e-mail地址作为登录ID。当创建新的文件时,就会向客户发送一个e-mail信息,欢迎他加入系统,并提供访问信息,和其它的内容。客户进入默认的房屋搜索标准集中,并保存信息。2.2选择性流程2.2.1复用登录ID在基本流程中,如果潜在客户进入了一个已经存在的e-mail地址的话,系统就会认定用户已经创建了一个文件,然后向客户发送一条信息,告诉用户这个e-mail地址已经存在了,并询问用户是否想用已经存在的帐号创建一个新的帐号。潜在客户忘记密码在基本流程中,如果潜在客户忘记了密码,系统会允许他创建一个新的帐号。系统会向用户提供他的登录ID(e-mail地址),然后产生一个新的密码,并把它发送到用户的e-mail地址中。2.2.2非法信息或者不完整信息在基本流程中,如果客户没有提供足够的信息来创建用户文件的话,系统就会提示参与者缺填的信息。客户既可以输入缺填的信息,也可以取消操作。实验步骤:在UseCaseView中生成一个新的SequenceDiagram,命名为Buyer,首先确定角色ProspectiveBuyer,然后确定边界对象PersonalPlannerForm、控制对象PersonalPlannerController、实体对象BuyerRecord和PlannerProfile。接着添加消息。结果图3-1所示。图3-2是在浏览器中用到的角色和对象名称。图3-1SequenceDiagram图3-2浏览器中用到的角色和对象实验练习设置选择Tools→Options;选择Diagram标签;确保复选SequenceNumbering、CollaborationNumbering和FocusofControl;单击OK退出Options窗口。创建Sequence框图右单击浏览器中系统使用案例模型的AddItemtoShoppingCart;选择New→SequenceDiagram;将新框图取名为MainFlow;双击打开新框图。将角色和对象加进框图将Customer角色从浏览器拖动到框图中;选择Object工具栏按钮;单击框图顶部添加对象;将新对象取名为CartInterface;对下列对象重复第3和第4步:·CartMgr(控制)·ProductMgr(Object)·ProductItems(Object)·WhiteCrewSocks(Object)·CartItems(Object)将消息加进框图选择ObjectMessage工具栏按钮;从Customer角色的生命线拖动到CartInterface对象的生命线;选中消息时,输入Addwhitecrewsockstocart;重复第2和第3步,将其他消息加进框图中:·Addwhitecrewsockstocart(在CartInterface与CartMgr之间)(ObjectMessage)·Getwhitecrewsocks(在CartMgr与ProductMgr之间)(ObjectMessage)·Findproduct(whitecrewsocks)(在ProductMgr与ProductItems之间)(ObjectMessage)·Getproduct(在ProductItems与WhiteCrewSocks之间)(ObjectMessage)·Addwhitecrewsockstocart(在CartMgr与CartItems之间)(ObjectMessage)从工具栏中选择MessagetoSelf按钮;在最后一个消息下面,单击CartItems对象的生命线,加上反身消息;将新消息命名为Addwhitecrewsockstocart。例图如图3-3所示:图3-3实验结果

将上面的Sequence框图转换成Collaboration框图。如图3-4所示。图3-4转换后的Collaboration框图实验四类分析与包本次实验要求能够在用例中加入类,并分析类,发现类的职责。实验目的:掌握如何创建类;学习如何为类指定版型;掌握定义类的职责;学习分析类的职责;分析类与包的关系。实验任务:在逻辑视图中创建类;为创建的类指定相应的类版型;定义类的职责;使用类与包。实验结果:(Lab4-1.mdl)逻辑图的分析模型包中加入了类,并定义了职责。具体的实现过程:任务1:创建类打开Lab4.mdl,在浏览器中展开展开LogicalView,在AnalysisMode包中创建以下4个类:PersonnalPlannerForm(boundaryclass)PersonalPlannerController(controlclass)BuyerRecord(entityclass)PlannerProfile(entityclass)注意:类的取名一定要简洁、明了,当类的名字由多个单词构成时,可以由每个单词的首字母构成类名。图4-1创建四个类创建类的步骤:右键点击AnalysisMode包,添加类;右键点击创建的类,选择OpenSpecification,在Stereotype选择上述的相应的类版型;UML中有三种基本的类版型用于分析:边界、实体和控制;重复步骤1、2,直到上述的所有类都创建完毕。任务2:定义类的职责定义上述创建的4个类的职责。PersonalPlannerForm//maintainprofile//prompttocreatenewprofile//submitprofileinformationPersonalPlannerController//maintainprofile//submitprofileinformationBuyerRecord//findbuyerrecord//createanewrecord//gete-mailaddressPlannerProfile//createanewpersonalprofile//getsearchcriteria//savehomereferencetoplanner//savelenderlisttoprofile具体操作步骤:双击PersonalPlannerForm类,打开Specification窗口;选择Operation标签,在空白窗口中,鼠标右键点击,选择Insert,输入上述的相应操作项,得到图4-2;重复步骤2,为该类添加完所有的操作;重复1-3直到所有类的操作均添加完毕。图4-2输入类的属性全部类的职责定义完之后得到图4-3。图4-3类的职责定义任务3:创建包右键单击浏览器中的Logical视图;选择New/Package;新包取名为Entities;重复步骤1~3,创建Boundaries和Control包。任务4:将类组成包在浏览器中,将PersonalPlannerForm类拖动到Boundaries包;将PersonalPlannerController类拖动到Control包;将BuyerRecord、PlannerProfile类拖动到Entities包。任务5:输出结果Lab4-1.mdl。实验五设计类图与分析本次实验要求能够在用例中加入类,并分析类,发现类的职责;并要求掌握相关类属性和操作。实验目的:掌握如何创建类图;学习如何删除类图;在类框图中创建类;分析类图;使用属性和操作;在Class框图中显示属性和操作;将操作映射到消息。实验任务:在逻辑视图中创建类框图;在指定的类框图中创建类;将类组成包;增加属性与操作的特定语言细节;将选项设置成显示所有属性和所有操作,并显示操作签名。实验结果:(Lab5.mdl)Boundaries包,Control包,Entities包中各Main类框图中都有相应的类,并增加了相应的属性和操作。具体的实现过程:任务1:创建创建一个新的RationalRose模型。任务2:设置选择Tools/Options;选择Diagram标签;确保选择ShowStereotypes复选框;确保选择ShowAllAttributes和ShowAllOperations复选框;确保取消SuppressAttributes和SuppressOperations复选框。任务3:创建包1.右键单击浏览器中的Logical视图;2.选择New/Package;3.新包取名为Entities;4.重复步骤1~3,创建Boundaries和Control包。任务4:创建MainClass框图双击浏览器中Logical视图内的MainClass框图将其打开;将Entities包从浏览器中拖到框图上;将Boundaries和Control包从浏览器中拖到框图上。任务5:创建包含“AddItemtoShoppingCart”使用案例中所有类的Class框图右键单击浏览器中的Logical视图;选择New/ClassDiagram;将新的Class框图取名“AddItemtoShoppingCart”;双击“AddItemtoShoppingCart”Class框图,将其打开;选择类工具栏按钮,并将每个类(CartMgr、CartInterface、ProductMgr、Product、ProductCollection、CartCollection及CartItem)加到框图中。任务6:将版型加进类中右键单击框图中的CartInterface类;从弹出的菜单中选择OpenSpecification;在版型(Stereotype)字段中选择或输入Boundary;单击OK;右键单击框图中的CartMgr类;从弹出的菜单中选择OpenSpecification;在版型(Stereotype)字段中选择或输入Control;单击OK;重复1~4步,指定ProductMgr类为Control版型;重复1~4步,指定其他的4个类为Entity版型。任务7:将类组成包在浏览器中,将CartInterface类拖动到Boundaries包;将CartMgr与ProductMgr类拖动到Control包;将CartCollection等其他类均拖动到Entities包。任务8:将Class框图加进每个包在浏览器中,右键单击Boundaries包;选择New/ClassDiagram;将新框图取名为Main;双击打开新框图;将CartInterface类从浏览器拖到框图中;关闭框图;在浏览器中,右键单击Entities包;选择New/ClassDiagram;将新框图取名为Main;双击打开新框图;将Entities包中的类依次拖到该框图中;关闭框图;在浏览器中,右键单击Control包;选择New/ClassDiagram;将新框图取名为Main;双击打开新框图;将Control包中的类依次拖到该框图中;关闭框图。下面的实验是要求掌握如何寻找类属性和操作,再增加类属性和操作的细节,接着要在Class框图中显示属性和操作。最后要求在Interaction框图中将操作映射到消息。属性属性是与类相关联的信息。例如Company类可能有属性Name、Address和NumberofEmployees。Rose中可以对模型中的每个类加进一个或几个属性。寻找属性属性的来源有许多。首先可以查阅使用案例文档,寻找事件流中的名词。有些名词是对象或类;有些是角色;有些则是属性。例如,从下列事件流:“Theuserenterstheemployee’sname,address,socialsecuritynumber,andphonenumber”可以看出,Employee类有属性Name、Address、SSN、Phone。另一个来源是查看需求文档。需求中可能会介绍系统要收集哪些信息。收集的信息就是类的属性。最后,可以检查数据库结构。增加属性每个属性有三条主要信息:属性名、数据类型和初始值。增加属性的方法有三种,可以直接将属性加进Class框图,用浏览器增加属性或用类规范窗口增加属性。删除属性Rose中删除属性的最简单方法是通过浏览器,但也可以用Class框图删除。任务9:设置复选ShowVisibility框、ShowStereotypes框、ShowOperationSignatures框、ShowAllAttributes和ShowAllOperations框;确保SuppressAttributes和SuppressOperations框没有被选中;确保取消VisibilityasIcons框;选择Notations标签。任务10:增加操作在浏览器中找到AddItemtoShoppingCart类框图。对CartInterface类,增加新操作:AddItem(ItemNo:Long):Boollean重复第2步,将下列操作加进相应类中:•在CartMgr中增加AddItem(ItemNo:Long):Boollean•在ProductMgr中增加GetProduct(ItemNo:Long):Product•在CartCollection中增加AddItem(NewItem:Product):Boolean•在ProductCollection(FindProduct)中增加FindProduct(ItemNo:Long):Product任务11:增加属性对Product类输入新属性:productID:Long、productDescription:string、productUnitPrice:Double。任务12:保存结果Lab5.mdl。实验六构件图和部署图建模本实验主要是根据指定的用例场景描述文档设计构件图和部署图。实验目的:掌握如何创建构件图和部署图;掌握如何在构件图中增加组件等;掌握如何在部署图中添加处理器、设备等。实验任务:创建购物车应用程序的Component框图;创建订单处理系统的Deployment框图。实验结果(Lab6-1.mdlandLab6-2.mdl):创建Component框图和Deployment框图。具体实现过程:任务1:创建购物车应用程序的Component框图Step1:创建三个组件包,将新包分别命名为Entities、Boundaries和Control;Step2:将创建的三个包加进主Component框图中;Step3:绘制包依赖性:从工具栏中选择Dependency;在主Component框图中单击Entities包,画出向Control包的依赖性;重复1-2步增加从Control包到Boundaries包的依赖性。Step4:增加包的组件和画出依赖性:打开主Component框图中的Entities包;从工具栏中选择PackageSpecification,将包规范放进框图中,输入包规范名为CartCollection;重复1-2步,加进CartItem、ProductCollection与ProductItem包规范;从工具栏中选择Dependency,单击CartItem包规范,拖动到CartCollection包规范的依赖性线;重复4步,增加从ProductItem包规范到ProductCollection包规范的依赖性,并且增加从ProductItem包规范到CartItem包规范的依赖性;用这个方法创建下列组件和依赖性:•对边界包的CartInterface包规范;•对控制包的CartMgr包规范;•对控制包的ProductMgr包规范;•对控制包的ProductMgr包规范到CartMgr包规范的依赖性Step5:创建SystemComponent框图Step6:将组件放进SystemComponent框图将CartItem包规范拖动到框图上;重复1步,将CartCollection、ProductItem与ProductCollection包规范放到框图上;将下列组件放到框图上:•边界组件包中CartInterface包规范•控制组件包中CartMgr包规范•控制组件包中ProductMgr包规范从工具栏中选择MainProgram,将主程序放在框图上,并取名MainProgram。Step7:将其余依赖性加进SystemComponent框图加进组件后,已经存在的依赖性自动出现在SystemComponent框图中。然后可以将其余依赖性加进SystemComponent框图:选择Dependency;单击ProductCollection包规范,向ProductMgr包规范拖动依赖性线;对下列依赖性重复1-2步:•CartCollection包规范到CartMgr包规范•CartMgr包规范到CartInterface包规范•CartInterface包规范到MainProgram任务规范Step8:将类映射组件选中ProductItem类;将ProductItem类拖动到Component视图中的ProductItem组件包规范中,从而将ProductItem类映射ProductItem组件包规范;重复1-2步,将下列类映射组件:•CartItem类到CartItem包规范•CartCollection类到CartCollection包规范•ProductCollection类到ProductCollection包规范•CartMgr类到CartMgr包规范•ProductMgr类到ProductMgr包规范•CartInterface类到CartInterface包规范Step9:保存结果Lab6-1.mdl。任务2:创建订单处理系统的Deployment框图Step1:将结点加进Deployment框图打开Deployment框图,从工具箱中选择Processor;单击框图放上处理器,命名为DatabaseServer。重复2-4步加入下列处理器:•ApplicationServer•ClientWorkstation#1•ClientWorkstation#2•WebServer从工具箱中选择Device,单击框图放上设备,输入设备名Printer。Step2:添加连接从工具箱中选择Connection;单击DatabaseServer处理器,拖动连接线到ApplicationServer处理器;重复1-2步,加进下列连接:•ApplicationServer处理器到WebServer处理器•ApplicationServer处理器到ClientWorkstation#1处理器•ApplicationServer处理器到ClientWorkstation#2处理器•ApplicationServer处理器到Printer设备Step3:添加进程选中ApplicationServer处理器;建立新的进程,命名为MainProgram。重复1-2步添加下列进程:•对ClientWorkstation#1处理器:WebBrowser•对ClientWorkstation#2处理器:WebBrowser•对DatabaseServer处理器:OracleServer•对Web处理器:InternetInformationServerStep4:显示进程在浏览器中选择ApplicationServer处理器;从菜单中选择ShowProcess;重复1-2步,显示下列处理器的进程:•ClientWorkstation#1处理器•ClientWorkstation#2处理器•WebServer•DatabaseServerStep5:保存结果Lab6-2.mdl。实验七状态图与活动图本次实验要求能够根据指定的需求描述文档设计活动图,状态图。实验目的:掌握如何创建活动图;掌握在活动图加入活动、开始与结束状态、决策、保护条件等;掌握如何创建Statechart图;学习Statechart图中对象可以存在不同的状态信息,掌握对象如何从一种状态过渡到另一种状态,以及对象在不同状态中的行为。实验任务:根据文档描述创建活动图;运行活动图;掌握在Statechart图中加入活动、加入操作、退出操作、事件和状态历史加进状态中;掌握如何将事件、变元、保证条件、操作加进Statechart图的过渡中。实验结果:(Lab7.mdl)创建活动图和状态图。具体的实现过程:任务1:活动图活动图是一种建模事件流的方式。活动图显示与文本事件流相同的信息。活动是活动图的重要部分之一,它是过程中的步骤。Step1:创建1.创建一个新的RationalRose模型;在UseCaseView中创建一个包,命名为MaintainPersonalPlanner;在MaintainPersonalPlanner包中创建一个用例,仍命名为MaintainPersonalPlanner;在MaintainPersonalPlanner用例中创建活动图,命名为BasicFlow;Step2:用例描述关于MaintainPersonalPlanner用例的描述:ProspectiveBuyer可以建立一个帐号,该帐号保存了该用户的联系方式,存储了个人的喜好以及其他的个人财政信息。事件流2.1BasicFlow首先ProspectiveBuyer选择创建一个PersonalPlannerprofile。若profile不存在,系统要求ProspectiveBuyer创建一个新的;若存在则用户可以选择退出系统。2.2AlternativeFlow备份LogonID:BasicFlow中,ProspectiveBuyer若输入一个已存在的e-mail地址,系统默认用户创建了profile,并询问用户是否创建一个新帐号。ProspectiveBuyerForgetsPassword:在BasicFlow中,ProspectiveBuyer若忘记了密码,系统允许用户创建一个新的帐号(e-mail地址),并自动生成一个新密码并发送至用户的邮箱。InvalidFormatorInsufficientInformation:在BasicFlow中,ProspectiveBuyer在创建新profile中,若遗漏了某些附加的信息,系统将自动发送请求用户重新输入,用户可以输入信息,也可以选择“取消”,此时用例结束。BasicFlow活动图示意图如图7-1所示:图7-1BasicFlow活动图Step3:创建活动图在活动图BasicFlow中增加Start和EndStates;一个活动图中只有一个StartState,却可以有多个EndState。在活动图BasicFlow中增加StateTransitions,Decisions和GuardConditions;先增加Decision,后增加StateTransition;添加GuardCondition文本:打开StateTransition的窗口,在Detail页中加入相应的保护条件;Step4:运行在BasicFlow活动图中选择任一个元素,运行Report/ShowUsage,并观察其变化。任务2:状态图一个对象有一种或多种状态。例如,员工可以被雇用、解聘、试用、离职或退休。每个类可以创建一个或多个Statechart图,类的所有状态和过渡都体现在Statechart图中。Step1:在MaintainPersonalPlanner包中创建一个类,命名为“Product”,右键单击这个类,选择NewStatechartDiagram,命名为Shopping;Step2:在Shopping框图中增加StartState和EndState;Step3:在Shopping框图中增加5个State,分别命名为:“Ordered”“Inventoried”“OutofStock”“SelectforPurchase”“Purchased”;Step4:为Shopping框图中的States增加信息,双击State,打开规范窗口,单击Action标签,右击窗口,选择“Insert”:Ordered增加Entry操作:entry/Selectedproductisnotintheshopentry/Selectedproductisintheshopping增加Do操作:do/CheckingselectedproductifisintheshopInventoried增加Entry操作:entry/Purchasingproduct增加Event事件:eventUndefined/SelectedproductOutofStock增加Exit操作:exit/RecordingselectedproductisoutofstockStep5:在Shopping框图中增加过渡(Transition):StartStateOrdered中增加transition;OrderedOutofStock中增加transition;OrderedInventoried中增加transition;InventoriedSelectedforPurchase中增加transition;SelectedforPurchaseInventoried中增加transition;SelectedforPurchasePurchased中增加transition;PurchasedEndState中增加transition;OutofStockEndState中增加transition;InventoriedEndState中增加transition。Step6:增加过渡中的细节:双击OrderedOutofStock中的transition,打开规范窗口,选择Detail标签,在GuardCondition中输入“backordered”;重复第1步,在下列的transition中增加GuardCondition:“received”在OrderedInventoried;“InShoppingCart”在InventoriedSelectedforPurchase;“paid”在SelectedforPurchasePurchased。Step7:Statechart图示意图略。Step8:保存结果:Lab7.mdl。实验八UML与设计模式本实验主要是验证几种典型的设计模式。实验目的:验证几种典型的设计模式。实验任务:验证Façade设计模式;验证AbstractFactory设计模式;验证Visitor设计模式。实验结果:创建了Façade、AbstractFactory、Visitor三个设计模式。具体实现过程:任务1:创建Façade设计模式在java.sql包中,Java提供了一些对数据库进行操作的接口,如ResultSet、ResultSetMetadata、Connection、DatabaseMetadata、Statement等,利用这些接口中的方法可以对数据库进行操作。装载数据库驱动程序。代码如下:Try{Class.forName(driver);}catch(Execptione){System.out.println(e.getMessage());}利用Connection接口(具体实现类)连接数据库。如果必要,获取数据库的元数据信息。代码如下:Try{con=DriverManager.getConnection(url);dma=con.getMedataData();}catch(Exceptione){System.out.println(e.getMessage());}利用dma对象(类型为DatabaseMetadata)获取数据库的表名。代码如下:Vectortname=newVector();Try{results=newresultSet(dma.getTables(catalog,null,“%”,types));}catch(Exceptione){System.out.println(e);}While(results.hasMoreElements()){tname.addElement(result.get.ColumnValue(“TABLE_NAME”));利用Façade设计模式来简化对数据库的使用过程,通过创建Database和resultSet两个类来包含ResultSet、ResultSetMetadata、Connection、DatabaseMetadata、Statement接口中的一些主要操作,并利用Database类和resultSet类执行连接数据库、显示表名、列名、列中的数据、执行查询等操作。其中Database类的定义如下:ClassDatabase{PublicDatabase(Stringdriver)();PublicvoidOpen(Stringurl,Stringcat);PublicString[]getTableNames();PublicStringgetColumnNames(Stringtable);PublicStringgetColumnValue(Stringtable,StringcolumnName);PublicresultSetExecute(Stringsql);}resultSet类定义如下:classresultSet{PublicresultSet(ResultSetrset());PublicString[]getMetaData();PublicbooleanhasMoreElement();PublicString[]nextElment();PublicStringColumnValue(StringcolumnName);PublicStringgetColumnValue(StringcolumnName);PublicStringgetColumnValue(inti);}任务2:创建AbstractFactory设计模式Client只通过抽象产品(如AbstractProductA、AbstractProductB等)操作产品对象,产品对象的具体名字(如ProductA1、ProductB1、ProductA2、ProductB2等)不出现在Client中;在应用系统中增加或删除具体工厂(如ContreteFactory1、ContreteFactory2等)的种类很容易;保证应用系统在某一时刻只使用一个产品系列,如只使用ProductA1和ProductB1系列或只使用ProductA2ProductB2系列;AbstractFactory接口只确定了可以创建的产品集合(如只有ProductA和ProductB这两种产品),如果要支持新的产品种类,需要扩展AbstractFactory类及其所有子类中的方法。WidgetFactory是抽象类(定义称接口也可以)。对于图像用户界面中的每一个控件X,在WidgetFactory中都会声明一个createX()这样的方法,如createScrollBar()、createWindow()等。对于美洲具体的图像用户界面,将定义一个具体的子类,如对应于Motif图形用户界面,定义了类MotifWidgetFactory,并且在类PresentationManager图像用户界面也定义类似的类PMWidgetFactory,并在类中实现了createScrollBar()和createWindow()方法。对于PresentationManager图形用户界面也定义类似的类PMWedgetFactory,并在类中实现了createScrollBar()和createWindow()方法。任务3:创建Visitor设计模式对于每种操作类型,都定义为抽象类NodeVisitor的一个具体子类,如对应于类型检查的操作,定义了TypeCheckingVisitor类,对应于代码生成的操作,定义了CodeGeneratingVisitor类。在TypeCheckingVisitor类和CodeGeneratingVisitor类中,定义了一些visitX方法,这些visitX方法对应于对象结构中的结点类型。也就是说,在语法树中有几种类型的结点,在TypeCheckingVisitor类和TypeCheckingVisitor类中就有几个visitX方法。Node类是抽象类,声明了一个accept()方法,该方法有一个参数,其类型为抽象类NodeVisitor。在具体运行时,传到方法中的对象会是NodeVisitor的具体子类,即会是TypeCheckingVisitor类或CodeGeneratingVisitor类的对象。对于Node类的每个具体子类,虽然都有方法accept(),但accept()方法中的语句是不同的。对于AssignmentNode类来说,accept()中的语句是v.visitAssignment(this),对于VariableRefNode类来说,accept()中的语句是v.visitVariableRef(this)。使用Visitor设计模式:在菜单ToolsOptions…Notation中把建模语言设为Java。在类图中创建类,把类名设为A,然后用鼠标右击类A,在弹出菜单中选择Java/J2EEGOFPatternsVisitor菜单项。这时弹出一个对话框,要求设置参与者。根据需要可以指定具体Visitor和具体Element类。系统会提供默认的一个具体Visitor和具体Element。如果再增加一个具体Visitor和具体Element。所增加的具体Visitor是A_ContreteVisitor_B,所增加的具体Element是类A_ContreteElement_B。当然这些具体Visitor和具体Element类可以改成别的有意义的名字。单击OK按钮后,Rose在浏览器窗口中新生成7个类,A_Client、A_ObjectStructure、A_Visitor、A_Element、A_ConcreteVisitor_A、A_ConcreteVisitor_B和A_ContreteElement_B。把类A和生成的7个类拖动到类图中,Rose2003会自动加上类与类直接的泛化、关联、依赖等关系。为了使类图更加清楚,可以把类与类之间一些不太重要的依赖关系删除,最后得到类图。完成类图后,即可利用Rose2003生成代码框架。实验九数据建模本次实验要求对象模型和数据模型的相互转换。实验目的:掌握如何创建数据库对象;学习为关系数据库创建模式;掌握创建域包;学习创建数据模型图;学习创建表;实现对象模型和数据模型的相互转换。实验任务:在Component视图中创建数据库对象;在Logical视图中创建模式,并选定目标数据库;在Logical视图中创建包和域;在模式下创建数据模型图;创建表;实现对象模型和数据模型的相互转换。实验结果:(Lab9-1.mdl和lab9-2.mdl)创建正向工程和逆向工程。任务1:正向工程(对象模型转换为数据模型)用类表示数据库表:1.右键单击浏览器中的Component视图;2.选择DataModeler/New/Database;3.新数据库取名为TestDB;4.双击TestDB,在Target中选中MicrosoftSQLServer2000.x;这时在Logical视图中自动生成了GlobalDataTypes和Schemas两个包。图9-1选择数据库5.右键单击浏览器中的Logical视图;6.选择DataModeler/New/Schema,这时在Schemas中生成了<<schema>>s-1;图9-2选择DataModeler/New/Schema此时双击<<schema>>s-1,在Database中选择TestDB,如图9-2所示,图9-3在Database中选择TestDB7.右键单击Logical视图;8.选择New/Package创建包Demo;9.在Demo中创建两个类,Teacher和Student。其中Teacher类包含name,telephone,age属性(Attributes),其中name和telephone为string类型,age为Integer。Student包含name,sex,class属性,均为string类型;10.注意:必须在两个类的ClassSpecification弹出框中的Detail选项中选中Persisten,即转换为持久类。(如图,双击类图便弹出ClassSpecification框);图9-4转换为持久类11.右键单击包Demo,选择DataModeler/TransformtoDataModel…;12.在弹出框中的DestinationSchema中选中S_1,在TargetDatabase中选中TestDB,单击OK;这时在Schemas下的<<schema>>s-1中生成了两个表,分别为T_Teacher和T_Student(如图9-5)。图9-5生成两个表13.在SQLServer2000中创建一个新的数据库,命名为TestDB,待会将会将上面生成的两个表导入到该数据库中;14.右键单击<<schema>>s-1,选择DataModeler/ForwardEngineer;15.在弹出框中单击两次next后,在新出现的对话框中选中Excute,然后单击TestConnection,如果弹出成功标志则连接可用(如图9-6);图9

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论