《面向对象的分析与设计》实验指导书(修订稿)_第1页
《面向对象的分析与设计》实验指导书(修订稿)_第2页
《面向对象的分析与设计》实验指导书(修订稿)_第3页
《面向对象的分析与设计》实验指导书(修订稿)_第4页
《面向对象的分析与设计》实验指导书(修订稿)_第5页
已阅读5页,还剩49页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

面向对象的分析与设计实验指导书2012年1月修订

实验学时安排实验项目编号实验名称内容提要实验学时每组人数实验属性开出要求E05203401UseCase分析与设计根据指定的用户需求描述分析Actor和UseCase1设计必做E05203402顺序图建模根据指定的用例场景描述文档设计顺序图1设计必做E05203403类分析与包分析类并发现类的职责1设计必做E05203404设计类图与分析设计详细类图1设计必做E05203405构件图和部署图建模根据指定的用例场景描述文档设计构件图和部署图1设计必做E05203406状态图与活动图根据指定的需求描述文档设计状态图1设计必做E05203407UML与设计模式验证几种典型的设计模式1设计必做注:本学期实验地点全部填写为:计算机应用技术实验室,学时按照上表的分配完成。目录预备微软UML建摸软件熟悉 1实验一UseCase分析与设计(E05203401) 8实验二顺序图建模(E05203402) 15实验三类分析与包(E05203403) 21实验四设计类图与分析(E05203404) 25实验五构件图和部署图建模(E05203405) 29实验六状态图与活动图(E05203406) 33实验七UML与设计模式(E05203407) 38扩展实验(可选) 42实验一数据建模 42实验二图书管理系统设计 51PAGE25预备微软UML建摸软件熟悉【实验目的】1.熟悉RationalRose的安装过程;2.熟悉RationalRose的建模环境。【实验性质】验证性实验。【实验要求】实验设备和器材:PentiumII以上微机,Windows2000以上操作系统,RationalRose2003安装光盘一张。【实验内容】本次实验要求每个人都安装一遍RationalRose2003。【实验导读】第一块:熟悉RationalRose2003的安装。由于RationalRose的安装比较麻烦,所以通过安装RationalRose2003,并在安装过程中,发现一些问题,并解决和理解它。下面就开始介绍RationalRose2003的安装过程。打开光盘,双击RationalRose的安装图标,然后就会有如图0-1的界面,它是安装的开始界面,让你选择安装的路径。其默认路径是C:\ProgramFiles\RationalRoseEnterpriseEditionforWindows,你可以选择默认路径,也可以更改路径。

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

实验一UseCase分析与设计(E05203401)【实验目的】熟悉RationalRose进行建模的一些基本操作;学会使用UseCase视图与UseCase框图;学习使用UseCase、角色与关系;学习在包中增加.txt文件。【实验性质】设计性实验。【实验要求】在浏览器中增加UseCase框图;在新建的UseCase框图中增加角色;建模用例的事件流;增加文件。【实验内容】本次实验要求自己在现有的用例模型(Lab2-1.mdl)中,根据指定的用户需求描述分析Actor和UseCase,创建用例图。【实验结果】:(Lab2-1.1.mdl)创建了2个新的UseCase框图。【实验导读】Step1:首先打开目录Rose实验\Lab2-1.mdl,在浏览器中展开UseCaseView,展开UseCaseModel,双击框图GlobalViewofActorsandUseCases。图1-1创建UseCase图Step2:鼠标右键点击UseCaseModel,增加2个新的UseCaseDiagram,分别命名为:RealtorView和MaintainPersonalPlannerView。具体实现如图1-1、图1-2所示:图1-2新建UseCaseDiagram图1-3创建UseCase图Step3:在浏览器中双击RealtorView,打开RealtorView框图,同时将已经存在的Actor和UseCase依次拖入其框图中,并安排各个元素的位置。如图1-4所示:图1-4将Actor和UseCase拖入框图中Step4:按照Step3中同样的方法在浏览器中双击MaintainPersonalPlannerView,打开MaintainPersonalPlannerView框图,将现有模型中已经存在的Actor和UseCase依次拖入其框图中,并安排各个元素的位置。如图1-5所示:图1-5安排各个元素位置Step5:在UseCase中选择包,并加入新的UseCase事件流。包ApplyForLoan(ApplyForLoan.txt);包MaintainPersonalPlanner(MaintainPersonalPlanner.txt);包SearchForAHome(SearchForHome.txt);这3个txt文件均存在与\Rose实验,文件夹中。具体操作方法如下:右键点击ApplyForLoan包,选择New/File,打开ApplyForLoan.txt即可。按照同样的方法将其他2个文件加入到相应的包中。图1-6新建文件图1-7增加.txt文件Stpe6:按照上述同样的方法在UseCaseModel包中加入ProblemStatement.txt。图1-8在Use-CaseModel中增加FileStep7:保存新的mdl文件,取名为Lab2-1.1,下次实验将使用该文件。【实验作业】增加系统用例模型包,UseCase框图、用例与角色;增加系统用例描述;增加系统角色描述。【扩展练习】需求描述如下:某学校的网上选课系统主要包括如下功能:管理员通过系统界面进入,建立本学期要开的各种课程,将课程信息保存在数据库中并可以对课程进行改动和删除。学生通过客户机浏览器根据学号和密码进入选课界面,在这里学生可以进行三种操作:查询已选课程、选课以及付费。同样,通过业务层,这些操作结果存入数据库中。根据以上描述,绘制系统的用例图。并选择其中一个用例(如添加课程AddCourse)给出其用例描述。用例的描述格式(参考模板)描述项说明用例名称表明用户的意图或用例的用途,如“预订图书”标识符[可选]惟一标识符,如“UC1701”,在文档其他地方可用标识符来引用这个用例用例描述概述用例的几句话参与者与此用例相关的参与者列表优先级一个有序的排列,1代表优先级最高状态[可选]用例的状态,通常为以下几种之一:进行中、等待审查、通过审查或未通过审查前置条件访问用例前必须满足的条件列表后置条件用例完成以后得到满足的条件列表基本操作流程描述用例中各项工作都正常进行时用例的工作方式可选操作流程描述变更工作方式、出现异常或发生错误的情况下所遵循的路径被泛化的用例此用例所泛化的用例列表被包含的用例此用例所包含的用例列表被扩展的用例此用例所扩展的用例列表修改历史记录[可选]关于用例的修改时间、修改原因和修改人的详细信息问题[可选]与此用例的开发相关的问题列表决策[可选]关键决策的列表,将这些决策记录下来以便维护时使用频率[可选]参与则访问此用例的频率,如用户是每日访问一次还是每月访问一次用例“添加图书”的描述用例名称添加图书标识符UC0001用例描述图书管理员在收到新采购的图书后对之进行入库。参与者图书管理员优先级1状态通过审查前置条件图书管理员登录进入系统后置条件在库图书数目增加基本操作流程图书管理员录入图书书目;系统检查图书书目是否已存在;系统为这本图书生成唯一书号(条形码);系统添加新的图书书号。可选操作流程系统检查图书书目不存在,系统添加新的图书书目;被泛化的用例无被包含的用例无被扩展的用例无修改历史记录张三,定义基本操作流程,2009年3月20日张三,定义可选操作流程,2009年3月20日

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

实验三类分析与包(E05203403)【实验目的】掌握如何创建类;学习如何为类指定版型;掌握定义类的职责;学习分析类的职责;分析类与包的关系。【实验性质】设计性实验。【实验要求】在逻辑视图中创建类;为创建的类指定相应的类版型;定义类的职责;使用类与包。【实验内容】本次实验要求能够在用例中加入类,并分析类,发现类的职责。【实验结果】:(Lab4-1.mdl)【实验导读】任务1:创建类打开Lab4.mdl,在浏览器中展开展开LogicalView,在AnalysisMode包中创建以下4个类:PersonnalPlannerForm(boundaryclass)PersonalPlannerController(controlclass)BuyerRecord(entityclass)PlannerProfile(entityclass)注意:类的取名一定要简洁、明了,当类的名字由多个单词构成时,可以由每个单词的首字母构成类名。图3-1创建四个类创建类的步骤:右键点击AnalysisMode包,添加类;右键点击创建的类,选择OpenSpecification,在Stereotype选择上述的相应的类版型;UML中有三种基本的类版型用于分析:边界、实体和控制;重复步骤1、2,直到上述的所有类都创建完毕。任务2:定义类的职责定义上述创建的4个类的职责。PersonalPlannerForm//maintainprofile//prompttocreatenewprofile//submitprofileinformationPersonalPlannerControllerv//maintainprofile//submitprofileinformationBuyerRecord//findbuyerrecord//createanewrecord//gete-mailaddressPlannerProfile//createanewpersonalprofile//getsearchcriteria//savehomereferencetoplanner//savelenderlisttoprofile具体操作步骤:双击PersonalPlannerForm类,打开Specification窗口;选择Operation标签,在空白窗口中,鼠标右键点击,选择Insert,输入上述的相应操作项,得到图3-2;重复步骤2,为该类添加完所有的操作;重复1-3直到所有类的操作均添加完毕。图3-2输入类的属性全部类的职责定义完之后得到图3-3。图3-3类的职责定义任务3:创建包右键单击浏览器中的Logical视图;选择New/Package;新包取名为Entities;重复步骤1~3,创建Boundaries和Control包。任务4:将类组成包在浏览器中,将PersonalPlannerForm类拖动到Boundaries包;将PersonalPlannerController类拖动到Control包;将BuyerRecord、PlannerProfile类拖动到Entities包。任务5:输出结果Lab4-1.mdl。

实验四设计类图与分析(E05203404)【实验目的】掌握如何创建类图;学习如何删除类图;在类框图中创建类;分析类图;使用属性和操作;在Class框图中显示属性和操作;将操作映射到消息。【实验性质】设计性实验。【实验要求】在逻辑视图中创建类框图;在指定的类框图中创建类;将类组成包;增加属性与操作的特定语言细节;将选项设置成显示所有属性和所有操作,并显示操作签名。【实验内容】本次实验要求能够在用例中加入类,并分析类,发现类的职责;并要求掌握相关类属性和操作。【实验结果】:(Lab5.mdl)Boundaries包,Control包,Entities包中各Main类框图中都有相应的类,并增加了相应的属性和操作。【实验导读】任务1:创建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:设置1.复选ShowVisibility框、ShowStereotypes框、ShowOperationSignatures框、ShowAllAttributes和ShowAllOperations框;2.确保SuppressAttributes和SuppressOperations框没有被选中;3.选择Notations标签,确保取消VisibilityasIcons框;任务10:增加操作1.在浏览器中找到AddItemtoShoppingCart类框图。2.对CartInterface类,增加新操作:AddItem(ItemNo:Long):Boollean3.重复第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。【扩展练习】在选课系统中设计了以下类:界面FormObject;控制对象ControlObject;课程Course。设计了以下角色:学生Student;管理员Registrar;学生和管理员的父类People;数据库Database。这些类和角色之间的关系如下:角色Student和Register从People派生;学生、管理员在与系统交互时,都有一个界面与之对应;一个界面可能和课程相关(0-多门);控制对象负责课程的处理,处理结果显示在界面上;控制对象完成对数据库的操作;界面请求控制对象的服务。任务一:根据以上分析,绘制出系统的简略类图。任务二:对绘制的简略类图,添加类的属性和操作,绘制出系统的详细类图。实验五构件图和部署图建模(E05203405)【实验目的】掌握如何创建构件图和部署图;掌握如何在构件图中增加组件等;掌握如何在部署图中添加处理器、设备等。【实验性质】设计性实验。【实验要求】创建购物车应用程序的Component框图;创建订单处理系统的Deployment框图。【实验内容】本实验主要是根据指定的用例场景描述文档设计构件图和部署图。【实验结果】:(Lab5-1.mdlandLab5-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:保存结果Lab7-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:保存结果:Lab7-2.mdl。【扩展练习】在选课系统中,包括MainProgram类(主程序)、People类、FormObject类、ControlObject类、Student类、Registrar类、Course类和Database类。People类是Student类和Registrar类的基类,所有Student类和Registrar类依赖People类。FormObject类和ControlObject类都和Course类相关,依赖Course类。ControlObject类和Database类相关,ControlObject类依赖Database类。根据以上描述,绘制出选课系统的组件图和部署图。实验六状态图与活动图(E05203406)【实验目的】掌握如何创建活动图;掌握在活动图加入活动、开始与结束状态、决策、保护条件等;掌握如何创建Statechart图;学习Statechart图中对象可以存在不同的状态信息,掌握对象如何从一种状态过渡到另一种状态,以及对象在不同状态中的行为。【实验性质】设计性实验。【实验要求】根据文档描述创建活动图;运行活动图;掌握在Statechart图中加入活动、加入操作、退出操作、事件和状态历史加进状态中;掌握如何将事件、变元、保证条件、操作加进Statechart图的过渡中。【实验内容】本次实验要求能够根据指定的需求描述文档设计活动图,状态图。【实验结果】:(Lab6.mdl)【实验导读】任务1:活动图活动图是一种建模事件流的方式。活动图显示与文本事件流相同的信息。活动是活动图的重要部分之一,它是过程中的步骤。Step1:创建创建一个新的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活动图示意图如图6-1所示:图6-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:保存结果:Lab8.mdl。【扩展练习】练习一:对选课系统中的课程类(对象)(Course)的状态变化过程如下:课程对象被创建,添加到数据库中。管理员可以删除、修改课程信息,在某个学期,开设该课程,如果选修人数超过指定人数,就不再允许学生选这门课。学期结束,课程的状态终止。根据以上描述,绘制课程类(Course)的状态图。练习二:选课系统中的添加课程(AddCourse)用例的事件流如下:管理员选择进入管理界面,用例开始。管理员输入课程各项信息;系统验证是否和已有课程冲突;A1:有冲突系统添加新课程,提示课程添加成功;系统重新进入管理主界面,显示所有课程;用例结束。其他事件流:A1:有冲突系统提示冲突,显示冲突课程信息;用户重新输入;继续验证直至无冲突;进入添加课程事件流第4步。根据以上描述并进一步细化,绘制出AddCourse用例的活动图。

实验七UML与设计模式(E05203407)【实验目的】验证几种典型的设计模式。【实验性质】验证性实验。【实验要求】验证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类执行连接数据库、显示表名、列名、列中的数据、执行查询等操作。如图所示:图Facade设计模式的应用其中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设计模式1.Client只通过抽象产品(如AbstractProductA、AbstractProductB等)操作产品对象,产品对象的具体名字(如ProductA1、ProductB1、ProductA2、ProductB2等)不出现在Client中;2.在应用系统中增加或删除具体工厂(如ContreteFactory1、ContreteFactory2等)的种类很容易;3.保证应用系统在某一时刻只使用一个产品系列,如只使用ProductA1和ProductB1系列或只使用ProductA2ProductB2系列;4.AbstractFactory接口只确定了可以创建的产品集合(如只有ProductA和ProductB这两种产品),如果要支持新的产品种类,需要扩展AbstractFactory类及其所有子类中的方法。任务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视图中创建包和域;在模式下创建数据模型图;创建表;实现对象模型和数据模型的相互转换。【实验内容】本次实验要求对象模型和数据模型的相互转换。【实验结果】:(Labkz1-1.mdl和labkz2-2.mdl)创建正向工程和逆向工程。【实验导读】任务1:正向工程(对象模型转换为数据模型)用类表示数据库表:1.右键单击浏览器中的Component视图;2.选择DataModeler/New/Database;3.新数据库取名为TestDB;4.双击Test

温馨提示

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

评论

0/150

提交评论