UML 实验指导书
课程名称:年级专业:学 号:姓 名:指导老师:完成日期:
UML基础和Rose建模教程 09 级信息管理与信息系统 09056068 陈芳 于同洋 2011年4—5月
1
目录
实验一 UML建模基础 ... 错误!未定义书签。 实验二 用例图 .......... 错误!未定义书签。 实验三 UML类图 ........ 错误!未定义书签。 实验四 对象图 .......... 错误!未定义书签。 实验五 包图 ........... 错误!未定义书签。 实验六 状态图 .......... 错误!未定义书签。 实验七 活动图 ......................... 24 实验八 时序图与协作图 ................. 29 实验九 组件图 .......................... 34
2
实验一 UML建模基础
[实验目的和要求] 1、 2、 3、 4、
[实验内容和步骤] 1、 2、
[分析与讨论]
1、总结UML在软件工程中的作用以及使用UML建模的必要性。 答:统一建模语言(UML是 Unified Modeling Language的缩写)是用来对软件密集系统进行可视化建模的一种语言。UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。
统一建模语言 (UML)是非专利的第三代建模和规约语言。 UML是在开发阶段,说明,可视化,构建和书写一个面向对象软件密集系统的制品的开放方法。UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。
UML可以贯穿软件开发周期中的每一个阶段。被OMG采纳作为业界的标准。 UML最适于数据建模,业务建模,对象建模,组件建模。
UML作为一种模型语言,它使开发人员专注于建立产品的模型和结构,而不是选用什么程序语言和算法实现。当模型建立之后,模型可以被UML工具转化成指定的程序语言代码。
UML是一种功能强大的,面向对象的可视化系统分析的建模语言,它的各个模型可以帮助开发人员更好地理解业务流程,建立更可靠,更完善的系统模型.从而使用户和开发人员对问题的描述达到相同的理解,以减少语义差异,保障分析的正确性.
练习使用建模工具建立各种UML图形,并对图形进行相应编辑和修改。 认识各种UML关系及可见性符号,并用工具表示出来。 熟悉UML建模工具Rational Rose的基本菜单及操作。 掌握UML的三大组成部分及各部分作用。 掌握UML规则和相关机制。
掌握UML的可见性规则和构造型的作用。
实验二 用例图
[实验目的和要求]
3
1、 掌握用例的概念。
2、 掌握UML用例图的组成、作用以及使用场合。 3、 掌握用例与用例之间的各种关系。
4、 学习针对具体场景使用用例图进行分析说明的方法。 5、 掌握用例描述的概念和基本结构,以及用例描述的作用。
[实验内容和步骤]
1、 什么是用例,什么是场景?用例和场景之间的关系是怎样的?
答:用例是外部可见的系统功能单元,这些功能由系统单元提供,并通过一系列系统单元与一个或是多个参与者之间交换的消息所表达。 场景是是帮助系统分析员发现和定义业务实体。
通过对场景的分析,给了我们重要的线索去发现业务实体。而我们发现了业务实体之后,又通过用例场景来验证这些实体是否支持了用例的实现。 2、 用例图中有哪些组成元素?在UML中是如何表示的? 答:在用例图的组成元素:参与者、用例、关系
3、 用例与用例之间的包含关系、扩展关系和泛化关系各代表什么含义?它们
之间有何区别?对以上三种关系各举一例,画出用例图,并进行说明。 答:(1)、关联关系:描述参与者与用例之间的关系,它是用于表示类的关系的关联原类的实例。
4
(2)、包含关系:基本用例的行为包含了另一个用例的行为。基本用例描述在多个用例中都有的公共行为。包含关系本质上是比较特殊的依赖关系。它比一般的依赖关系多了一些语义。在包含关系中箭头的方向是从基本用例到包含用例。
(3)、泛化关系:代表一般于特殊的关系。UML用例图中泛化关系的意思和面向对象程序设计中的继承的概念是类似的。不同的是继承使用在实施阶段,泛化使用在分析、设计阶段。在泛化关系中子用例继承了父用例的行为和含义,子用例也可以增加新的行为和含义或者覆盖父用例中的行为和含义。
(4)、扩展关系:扩展关系的基本含义和泛化关系类似,但在扩展关系中,对于扩展用例有更多的规则限制,基本用例必须声明扩展点,而扩展用例只能在扩展点上增加新的行为和含义
5
4、为了满足物业中介行业的信息化要求,甲公司基于详尽的需求调研与分析,准备研发一套符合市场需要的、实用的信息管理系统。主要将实现客户资料信息管理、客户委托(出租、出售、租赁、购买)信息管理、业务线索生成与管理、房源状态自动更新、权限管理、到期用户管理、房源组合查询等功能。该公司小王,通过多次的与潜在客户的交流与沟通,完成了最初的用例模型的开发,下是一个用例模型的局部:
打开房源信息页面< 答:首先打开房源信息页面用例与登陆信息用例的关系并不是包含的关系。应该是“USE”。 5、 阅读下面的用例图,说明该图所表达的信息。 答:参与者是客户和服务人员。主要关系是包含和拓展。首先有客户来预定座位, 如果,前面有别的客户,他就等待,服务人员进行作为信息查询,把空闲座位分给客户,然后办理结帐,有两种方式可供客户选择,要不现金结帐要不就是银行卡结帐,然后收款就可以了。 6、 下图是一个描述保险商务系统的简单用例图。根据该用例图回答问题。 修改房源信息 6 a) “签订保险单”用例可能涉及到哪几个实体类? 答:有客户和保险员两个实体类。 b) 现实生活中签订保单的基本流程如下:客户提出购买需求,保险员根据客 户 需求选择相应的保险服务,客户阅读保险条款,同意后打印保单样据,客户签字并支付保金,保单开始生效,保险员做相关系统纪录。如需要根据以上信息,请列举这个用例描述中可能存在扩展事件流。 客户选择相应的保险服务是对签订保单用例的扩展,保险员做相关系统的记录也是这个用例的扩展。 答“客户阅读保险条款,同意后可以签字并支付保金,否则图同意就不签订保单。 c) 保单管理用例在实际开发过程中可以泛化出若干小用例,列出可能存在的子 用例,并且说明这些用例和“保单管理”用例之间应该是什么关系? 答:单查询和保单保存可能是存在的子用例,这些用例和“保单管理”用例之间应该是泛化关系。 7、在一个TelephoneSystem(电话系统)中,用户可以使用电话卡或对方付款两种办法来打电话。 7 1)请画出表示该场景的用例图。 2)在前图的基础上,继续画出可能存在的包含用例和扩展用例。 [分析与讨论] 1、 总结用例图的重要作用,讨论并指出哪些场合下可以使用用例图。 答:用例图显示多个外部参与者以及他们与系统提供的用例之间的链接。通过用例建模可以对外部的角色以及他们所需要的系统功能建模。用例图用于系统的分析阶段。 2、 讨论用例分析技术和结构化分析之间的关系和区别。 答:联系:他们都可以使软件开发的更容易, 区别:结构化系统开发方法是指把整个系统开发过程分成若干阶段,每个阶段进行若干活动,每项活动应用系统标准、规范、方法和技术,完成一个或是多个任务,形成符合给定规定的软件产品。用例分析是面向对象的开发方法。 3、 在使用用例图的时候应该如何划分用例,应注意哪些问题? 答:确定用例:(1)、参与者需要从系统中获取那些功能?及参与者要系统做些什么? (2)、参与者是否需要读取、产生、删除、修改或是存储系统中的某些信息? (3)、系统状态的改变是否通知参与者? (4)、是否存在影响系统的外部事件? (5)、系统需要什么样的输入、输出的信息? 需要注意的问题:一定不要在用例图中使用两种命名的方法,即在椭圆之内又在 8 椭圆之外。 4、 继续分析类图实验中网上书店实例,画出系统的用例图。 答:如图所示: 借阅者请求服务的用例图 图书馆管理员处理借书、还书的用例图 9 系统管理员进行系统维护的用例图 实验三 UML类图 [实验目的和要求] 1、 2、 3、 4、 5、 [实验内容和步骤] 1、 简述类的定义,以及类的三要素 答:类是面向对象系统组织结构的核心,类就是对一组具有相同属相、操 10 掌握类的定义,类的3要素,UML中类的表示方法。 掌握类与类之间的各种关系代表的含义及表示方法。 实体类,边界类,控制类,关联类的概念和表示方法。 接口和抽象类的概念和表示方法。 类的多重性关系。 对一个类图进行相关的描述。 作、关系和语义的对象的描述。类的三要素是名称、属性和操作。 2、 类的属性和方法的可见性有哪些?UML中如何表示? 答:类中属性的可见性主要有三种:公有(Public)、私有(Private)和受保护(Protect)。而在UML中公有类型就用“+”来表示,私有类型就用“-”表达,而受保护类型就用“#”表达。 3、 已知三个类A.B和C.其中类A由类B的一个实类和类C的1个或多个实 类构成.请画出能够正确表示类A,B和C之间关系的UML类图. 答:如图所示: 4、根据以下描述画出类图,并注明多重性关系:一个学生可以选修多门课程,也可能没有任何课程;一门课程可以被多个学生选修;一个老师可以教多门课程或者不教课;每门课程至少有一个老师,也可以有多个老师任教;每门课程可以有0或1本教材,每本教材只能用于一门课程。 答:如图所示: 11 4、 现有一系统需要对商品进行管理,包括添加,删除商品,修改商品信息三 项功能,画出系统类图。(商品信息包括商品编号,商品名称,价格,生产厂商等) 5、 如果现在系统需求发生变化,需要能够对损坏商品进行打折,以及可以按 照商品的颜色和外形进行查询,则系统类图应该如何修改? 6、 根据下面的代码画出Invoice类的类图,要求标明各属性的类型和可见性 以及类方法。 public class Invoice 12 { public double amount; public Date date = new Date(); public string customer; public string specification; public string administrator = “unspecified”; static private int number_of_invoices()=0; public invoice(); { number_of_invoices++; } public void print() { System.out.println(\"The number of invoices is”+ int number_of_invoices); } } 类图如下图所示: 7、 下图是一个仓库管理系统的类模型局部,其中IncomeOrder是指入库单, OrderItem是指入库中的每一项,Product则是产品信息。请指出模型中的错误,说明原因并改正类图。 IncomeOrder11ProductOrderItem 答:Orderltem与IncomeOrder的关系并不是泛化关系,而应该是包含关系。改 13 正的类图: [分析与讨论] 1、 讨论类图在建模过程中的重要作用。 答:(一)、对简单协作建模。 1、识别要建模的机制。一个机制描述了正在建模的部分系统的一些功能和行为,这些功能和行为是由类、接口和一些其他元素的相互作用产生的。 2、对每种机制,识别参与协作的类、接口和其他协作,并识别这些事物之间的关系。 3、用协作的脚本检测事物,通过这种方法可以发现模型中被遗漏的部分和有明显语义错误的部分。 4、把元素和它们的内容聚合在一起。对于类,首先平衡好职责,随着时间的推移,将它们转换成具有的属性和操作。 (二)、对逻辑数据库模式建模。 1、在模型中识别的类,其状态必须超过其应用系统的生命周期。 2、创建包含这些类的类图,并把它们标记为永久(persistent)。对于特定的数据库细节,可以定义自己的标记值集合。 14 3、展开这些类的结构性细节,即详细描述属性的细节,并注重于关联和构造类的基数。 4、观察系统中的公共模式(如循环关联、一对一关联和n元关联),它们常常造成物理数据库设计的复杂化。 5、考虑这些类的行为,扩展对数据库存储和数据完整性来说重要的操作。一般情况下,与对象集的操作相关的业务规则应该被封装在永久类的上一层。 (三)、正向工程和逆向工程。 2、 总结在设计绘制类图的过程中应注意哪些问题。 答:UML类图(Class Diagram)是描述类、接口、协作以及它们之间关系的图,用来显示系统中各个类的静态结构。UML类图是定义其他图的基础,在UML类图基础上,可以使用状态图、协作图、组件图和配置图等进一步描述系统其他方面的特性。 UML类图包括7个元素:类(Class)、接口(Interface)、协作 (collaboration)、依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)以及实现关系(Realization)。 实验四 对象图 [实验目的和要求] 1、 掌握对象的概念,对象的三大特征,对象的表示方法。 2、 掌握类与对象的关系。 [实验内容和步骤] 1、 什么是对象,对象的三大特征是什么? 答:对象是一个存在于时间和空间的具体实例,而类仅代表一个抽象。对象可以被看作是类在某一时刻的实例。对象的三大特征结构、行为和标识。 2、 UML中对象的表示方法有哪些/ 答:如图所示: 15 3、在下图中最上面的对象的名称是什么?该图表示的意思是什么?请绘制出与其相应的类图。 China:CountryfuJian:ProvincesiChuan:Province 答:最上面得对象是:China。这是组合关系,中国是由四川和福建两个对象组成的。相应的类图如下图所示: 3、说明对象图的适用场景以及它的优缺点。 答:对象图适用于论证类模型的设计以及对源代码进行分析和说明。其优点是可以直观的理解出系统运行时的实时状态,缺点是比较复杂,工作量大。 [分析与讨论] 1、 思考类与对象之间的关系是怎样的?各举几个实例,说明哪些是类,哪些 是对象。 答:类图:1、类具有3个分栏:名称、属性和操作2、在类的名称分栏中只有类名3、类的属性分栏定义了所有属性的特征4、类中列出了操作5、类使用关联连接,关联使用名称、角色、多重性以及约束等特征定义。类代表的是对对象的分类所以必须说明可以参与关联的对象的数目 16 对象:1、对象只有两个分栏:名称和属性2、对象的名称形式为“对象名:类名”,匿名对象的名称形式为“:类名”3、对象则只定义了属性的当前值,以便用于测试用例或例子中4、对象图中不包括操作,因为对于同属于同一个类的对象而言,其操作是相同的5、对象使用链连接、链拥有名称、角色,但是没有多重性。对象代表的是单独的实体,所有的链都是一对一的,因此不涉及到多重性。 类是虚拟的而实例则是类的实例。例如,学生是一个类而张三就是一个具体的学生,是对象,字符是一个类而“abc”就是具体字符是对象…… 2、 思考在具体场景中应该如何区分类与对象。 答:因为对象就是类的实例,所以如果是抽像的不存在的就是类,而具体的存在的就是对象。 3、 找一段源程序,并绘制出与其相应的对象图。 实验五 包图 [实验目的和要求] 1、 掌握UML包的概念和作用。 2、 掌握包与包之间的各种依赖关系的区别。 3、 掌握建立包与包之间依赖关系的方法。 4、 掌握建立包图过程中需遵循的原则。 [实验内容和步骤] 1、 包属于UML中的何种事物?有何作用? 答:包是将多个元素组织为语义相关的组的通用机制。在实践中,一般使用术语子系统来描述包。作用是对复杂系统进行建模时,经常需要处理大量的类、接口、组件、节点和图,这好似有必要将这些元素进行分组,吧语义相近并倾向于同一变换的元素组织起来加入同一个包中,以方便理解和处理整个模型。 2、 UML中包的表示方法有哪几种? 答:虚包、框架、桩、子系统、系统 3、 包与包之间存在哪几种关系? 17 答:包可能有两种关系:(1)、引入和访问依赖‘(2)、泛化,用于说明报的家族。 4、 包与包之间的依赖关系有何特点? 答:包与包之间的依赖关系特点是单向传递和不可传递。 5、 如何避免包与包之间出现循环依赖关系?各举一例。 答:1、.将产生依赖的类型分离出来,放到另一个新的程序集AssemblyC中去。 2.使用接口来解除循环依赖。 6、 建立包图应注意哪些问题? 答:1.包的命名要简单、具有描述性。2.应用包是为了简化3.包应该连贯。4.在包上用版型注明架构层。5.避免包间的循环依赖。6.包依赖应该反映内部关系 7、根据下图判断下面哪句话正确的说明了包之间的依赖关系。答:答案:C A) 对Package1包中的元素做了修改后,需检查Package2包中的元素和Package3包中的元素是否要做相应修改。 B) 对Package1包中的元素做了修改后,需检查Package2包中的元素是否需要做相应修改,如果是,则需继续检查是否Package3包中元素也要做相应修改。 C) 对Package3包中的元素做了修改后,需检查Package2包中的元素是否需要做相应修改,如果是,则需继续检查是否Package1包中元素也要做相应修改。 D) 对Package3包中的元素做了修改后,需检查Package2包中的元素和Package1包中的元素是否要做相应修改。 7、 下面包图设计中是否存在问题?应如何改进。 18 A) B) 答“A图中B不能即依赖C同时还依赖E。 B图中循环依赖不正确,修改后: [分析与讨论] 1、 结合一个具体例子,分析UML建模过程中包图所起的作用。答:图书馆管理系统中的包图: 19 作用是: 1)对语义上相关的元素进行分组; 2)定义模型中的“语义边界”; 3)提供配置管理单元; 4)在设计时,提供并行工作的单元; 5)提供封装的命名空间,其中所有名称必须惟一 实验六 状态图 [实验目的和要求] 1、 掌握状态的定义和组成部分。 2、 掌握UML中状态的表示方法。 3、 掌握转换的定义及转换的5要素。 4、 了解触发事件、监护条件、动作的定义。 5、 掌握阅读和绘制状态图的方法。 [实验内容和步骤] 1、 什么叫做状态?状态由哪五个部分组成? 答:状态描述了状态机所建模对象的动态行为产生的结果,描述一个类对 20 象生命周期中的一个时间段。状态是由状态、转换、事件、活动、动作五部分组成。 2、 什么是转换?UML中转换的5要素是什么? 答:当一个特定的事件发生或者某些条件得到满足时,一个源状态下的对象在完成一定的动作后将发生状态转换,转向另一个称之为目标状态的状态。UML中转换的5要素是源状态、目标状态、触发事件、监护条件、动作。 3、 触发事件是什么?可以具体分为哪些事件? 答:触发事件是引起状态转换的事件,具体可分为信号、调用、时间段 4、 改变事件和监护条件有何异同? 答:在于监护条件只是在引起转换的触发事件处触发时和事件接受者对事件进行处理时被赋值一次,而修改事件则可以被赋值多次直到事件为真,多次赋值满足条件后转换也会被激发。 5、 什么叫做转换?转换可以分为哪几种? 答:转换表示当一个特定时间发生或是某些条件得到满足时,一个状态下的对象在完成一定的动作后发生状态改变,转向另一个称之为目标状态的状态。可分为外部转换、内部转换、完成转换、复合转换4种 6、 状态和对象的关系是怎样的? 下面描述中哪些是对象,哪些是状态? 支票已付 汽车停在那儿 小王正在工作 答:状态描述一个类对象生命周期中的一段时间段。支票已付是对象,汽车停在那儿和小王正在工作是状态。 7、 说出下面状态的状态名和各种转换、事件。 21 Lighting entry / turnOn do / blinkFiveTimes eventPowerOff / powerSupplySelf exit / turnoff eventSelfTest / defer 答:状态名是Lighting,转换有:turnOn、turnoff、defer,事件有:blinkFiveTimes、 eventPowerOff 、 powerSupplySelf、eventSelfTest。 8、 说出下面状态图所表达的信息。 答:一个烧水的事件:机器的初始状态是关闭状态,若没水则状态不变,有水时执行烧水动作,打开机器,水烧开后关闭机器,但若烧坏了机器则时间结束。 9、 说出下面状态图所表达的信息,并指出蓝色部分代表的含义。 答:学生学习一门课程:注册后开课,在学习过程中要进行三项评测,平时实验:实验一完成后实验二,都要完成;团队项目要完成;考试要及格,几个了就可以通过课程,不及格不能通过,要补考直至通过。蓝色的为监护条件。 10、根据下面状态图回答问题。 、 22 GFloorUPrequest(floor,direction)[ floor>0 ]entry/ CloseDoordo/ Eexit/ motor.stop()timeout[ getNextFloor()> A ]arrive()arrive()request(floor,direction)[ floor==0 ]WaitingForFloorNumtimeout[ getNextFloor()==-1&¤tFloor==0 ] / closeDoorentry/ openDoorgoToFloor(n)Returnentry/ closeDoordo/ motor.moveDown()exit/ FB[ C ]Downentry/ closeDoordo/ Dexit/ motor.stop()arrive() 上图是一个表示电梯系统的状态图,该系统中Controller类和Motor类的详细定义如下图所示: 根据类图,完成上面状态图中A,B,C,D,E,F处的内容。 答:A是0,B是timeout,C是goToFloor<2,D是Motor.moveDown(),E是Motor.moveUp(),F是Motor.stop() 10、某销售POS机工作流程如下:当客户到收银台后,收银员逐一输入用户购 买的商品,然后计算总金额,等待用户付款,确定支付成功之后,完成收银,等待下一个用户。请为其画出对应的状态图。 答:如图所示: 23 [分析与讨论] 1、 讨论思考状态图在UML建模中可以起到什么样的作用。 答:状态图是描述某一对象的状态转化的,它主要表现的是该对象的状态。从状态图中可以看出,该对象在接受了外界的某种刺激之后,会做出什么样的反应。描述的是一个对象的事情。可以说是对类图的一种补充,帮助开发者完善某一类。 2、 思考什么样的情况下适合引入状态图进行建模。 答:状态图一般用于系统中的某些对象,比如类、用例和系统的行为建模。建模的时候要找出对象所出的状态、触发状态改变的动作,以及对象状态改变时应执行的动作。 实验七 活动图 [实验目的和要求] 24 1、 掌握活动的概念以及表示方法。 2、 掌握活动图中个元素表示的意义和表示方法。 3、 掌握分支、监护条件、分岔、汇合和泳道的概念。 4、 掌握阅读和绘制活动图的方法。 5、 掌握UML的可见性规则和构造型的作用。 [实验内容和步骤] 1、 什么是活动?UML中如何表示活动? 答:活动是某件事情正在进行的状态,既可以是现实中正在进行的某一项工作,又可以是软件系统某个类对象的操作。 活动图 2、 活动图中包括哪些元素?分别如何表示? 答:动作状态、活动状态、动作流、分支与合并、分叉与汇合、泳道和对象流等。动作状态用使用平滑圆角矩形表示,所表示动作写在圆角矩形内。UML中活动状态和动作状态的图标相同,但是活动状态可以在图标中给出入口动作和出口动作等信息。与状态图的转换相同,UML活动图的转换也用带箭头的直线表示,箭头的方向指向转入的方向。UML中分支与合并用空心的小菱形表示。分叉与汇合用加粗的水平线段表示。泳道是用垂直实线绘出,垂直线分隔的区域就是泳道。对象流用带有箭头的虚线表示。 3、 分岔和分支有什么区别,分别适用于什么样的建模目标? 答:分支是对象类所具有的条件行为,当一个动作流遇见分支时就需要根据条件判断,从而选择不同的动作状态,适用于需要对动作流进行一个动作进行条件判断的建模目标。而分叉时用来描述并发线程,每个分叉可以有一个输入转换和两个或多个输出转换,每个转换都可以是独立的控制流,是用于多条同时发生的动作流的建模目标。 25 4、 活动图中监护条件和改变时间分别有何作用?两者间的区别是什么? 答:监护条件是当满足这个条件时,所对应的转换就发生,而改变时间 是改变时间发生转换的时间,也就是改变监护条件的时间。 5、 说明下面活动图所表达的信息。 答:活动图从用户下订单开始,在用户下完订单后产生并行的两个支路的行为:一条生成送货单,准备送往供货区;另一条始交予客户的回执(选择支付的方式),再进行判断确定用户是否取消或订单超过时限,若是,则订单取消,相应的停止活动的进行,若否,则进行收款操作;之后两条支路聚合,统一。使订单成功送达,供应商送货;通过系统修改订单状态;最后确认判断是否所有订单项已送货完毕,是,则订单处理完成;否则继续循环进行供应商的供货检查,送货-修改订单项状态-判断所有订单项已送货完毕,的操作,直至所有订单项均已送货完毕为止。 6、 用活动图表示for(i=0;i<9;i++)循环。 答:如图所示: 26 7、 对于如下图所示的活动图,最大可能的并发线程数是5个。 Activity1Activity2Activity3Activity4Activity5Activity6 [分析与讨论] 1、 总结UML在软件工程中的作用以及使用UML建模的必要性。 答:UML是一种面向对象的建模语言,而不是一种面向对象的建模方法,它只是给出一套用于建模的元素及表示符号并定义了它们的语义,而不涉及如何进行系统建模,它本身没有提供过程的概念,这意味着用户在使用UML进行建模时,可以选用任何适合的方法和过程。过程的选用与模型/ 27 软件开发过程的不同因素有关,诸如所开发软件的种类(如实时系统、信息系统和桌面产品)和开发的目的等。用户将根据不同的需要选用不同的过程。然而,使用UML建模仍然有着大致统一的过程框架。该框架包含了UML建模过程中的共同要素,同时又为用户选用与其所开发的工程相适合的建模技术提供了很大的自由度。 2、 分小组讨论利用“支付宝”进行网上购物的活动过程,并画出活动图,关 于支付宝的相关说明可以登录http://www.alipay.com/查看。 答:如图所示: 3、 针对前面的网上书店系统,画出用户购书,商家发货等过程的活动图。 答:网上书店系统流程图: 28 商家发货流程图: 实验八 时序图与协作图 [实验目的和要求] 1、 掌握时序图与协作图的概念及作用。 29 2、 掌握UML中静态图形和动态图形的区别和联系。 3、 掌握UML时序图与协作图的基本图形,了解它们各自的组成元素、特定作 用和适用场合。 4、 重点掌握时序图的画法以及其中元素所代表的意义。 [实验内容和步骤] 1、 UML中的时序图与协作图之间各有什么区别和联系? 答:两者都是表示交互的方式,但时序图描述时间交互的各种信息,协作图描述的是和对象结构相关的信息。 2、 在顺序图和协作图中,应如何表示“循环”,“判断”等结构? 答:整个消息的传递过程就形成了一个完整的序列,因此通过在每个消息的前面加上一个用冒号隔开的顺序号来表示其顺序 3、 什么是消息?消息在交互中扮演什么角色? 答:对象之间某种形式的通信,可以激发某个操作、唤起信号或导致目标对象的创建或撤销。两个对象之间的单路通信。 4、 交互图中有哪几种消息?它们之间具体有何分别?应如何表示? 答:简单消息:简单控制流; 同步:嵌套控制流 异步:异步控制流。 可以讲一个简单消息和一个同步消息合并成一个消息。 对于消息的这几种控制流不知道怎么具体区分,比如一个老师让一个学生发言属于什么消息?简单控制流?简单消息:做完一件事再做另外一件事。买票是同步;异步是不等结果的返回就去做另外一件事,比如洗衣服,洗衣机洗衣服的时候可以去做饭。乙方发送了一个消息后不必等待甲方回应。而同步必须是等到回应后才能做另外一件事。 5、 已知某一个用例实现的类图如下,下面四个选项中的时序图(图中省略了消息编号、名称和返回消息),画出一个能和该类图对应的时序图。 30 6、 假设有一系统得协作图局部如图所示,print方法的功能是将传入的参数的值打印在屏幕上,fact方法是计算阶乘,如果test的初值为1,那么最终将打印出什么?(写出计算过程) 1: print(test)2: *[i=1..3] 1.1: test=test+fact(test):A:B [分析与讨论] 6、 讨论并总结在建模过程中运用交互图的重要作用及意义。 答:交互视图描述了执行系统功能的各个角色之间相互传递消息的顺序关系。类元是对在系统内交互关系中起特定作用的一个对象的描述,这使它区别于同类的其他对象。交互视图显示了跨越多个对象的系统控制流程。交互视图可用两种图来表示:顺序图和协作图,它们各有不同的侧重点顺序图的一个用途是用来表示用例中的行为顺序。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或状态机中引起转换的触发事件。协作图的一个用途是表示一个类操作的实现。协作图可以说明类操作中用到的参数和局部变量以及操作中的 31 永久链。当实现一个行为时,消息编号对应了程序中嵌套调用结构和信号传递过程。 7、继续前面的网上书店实例,为该实例中涉及的系统交互设计交互图。 上图是购物网站的“编辑购物车”用例中的部分的类图 用例描述: 基本事件流: 用户在Shopping Cart页面上修改购物车中商品数量,然后单击Update按钮。系统存储新的数量,然后计算并显示该商品的新价格。 用户单击Continue Shopping按钮。系统将控制权返回给浏览商品用例。 扩展事件流: 用户将商品数量改为0,则系统从购物车中删除该商品 用户点击Delete 按钮,系统从购物车中删除该商品 用户点击Check Out按钮,系统将控制权转到结账用例。 用户点击Clear Cart按钮,系统将购物车内所有商品删除。 请根据给出的类图,在下面的顺序图上画出“编辑购物车”用例内各个事件流(注意消息和类图提供的方法保持一致)。 32 :Customer:ShoppingCart:Item:ShoppingCart1: updatePage2: ContinueShopping3: checkOut4: clearPass to Check Out Use Case答: 33 实验九 组件图 [实验目的和要求] 1、 掌握组件的概念,了解引入组件的原因。 2、 掌握组件的要素,组件和类的比较。 3、 掌握UML中组件的表示方法。 4、 掌握阅读和绘制组件图的方法。 5、 了解组件图的应用。 [实验内容和步骤] 1、 什么是组件?组件有何作用? 答:将类、接口、等逻辑元素打包而形成的物理单元。作用是使用组件可以实现拖放式编程、快速的属性处理以及真正的面向对象的设计。 2、 组件的要素是什么? 答:组件、接口、依赖关系。 3、 组件和类的关系是怎样的?它们有何异同之处? 答:两者都有名称,都可以实现一组接口、都可以参与依赖关系、都可以被嵌套、都可以实现实例、都可以实现交互。但是,类描述了软件设计的逻辑组织和意图,而组件则描述软件设计的物理实现。每个组件体现了系统设计中特定类的实现。 4、 UML中组件有哪些表示方法,分别代表什么含义? 答:配置组件:运行系统所需要配置的组件,是形成可执行文件的基础;工作产品组件:包括模型、源代码和用于创建配置组件的数据文件、是配置组建的来源;执行组件:运行时创建的组件,最终可运行的系统产生的允许结果。 5、 组件中的接口有哪些?分别如何表示? 答:导入接口:供访问操作的组件使用;导出接口:有提供操作的组件提供 6、 在一张基本组件图中,组件之间最常见的关系是什么? 答:实现关系和依赖关系。 [分析与讨论] 1、 讨论组件图适用于哪些建模需求。 答:开发者发现组件图是有用的,因为组件图给他们提供了将要建立的系统的高层次的架构视图,这将帮助开发者开始建立实现的路标,并决定关于任务分配及(或)增进需求技能。系统管理员发现组件图是有用的,因为他们可以获得将运行于他们系统上的逻辑软件组件的早期视图。在完成系统的逻辑设计后,设计物理实现时,要求可视化其物理组件以及它们之间的关系。 34 因篇幅问题不能全部显示,请点此查看更多更全内容