问答题
【说明】
下面是某租车信息管理系统的介绍:该车库中备有若干车辆,每辆车有车号、车牌、车名、价格等属性。车库不定期地购买并注册新车供用户借用,也可将报废的旧车注销以停止租用。
车库可为众多用户提供服务。每个用户在借车之前需注册姓名、地址等内容。每个用户最多可同时借3辆车。每辆车借期7天:若有一辆车超期,则不可再借其他车。一辆车超期一天罚款250元。若一辆车超期3周不归还,则发布通告。若用户借的车丢失,在罚款处理之前不能借车,每辆报失的车罚款该车目前市价(包括折旧)的1.2倍。注册新用户不受限制;而注销用户之前,该用户必须归还所有借的车,或者报失并接受罚款。
【状态图1】

【状态图2】
问答题
【问题1】
分析车辆的状态和事件,指出图2-1中的(1)、(2)、(3)、(4)分别是什么?
【正确答案】
【答案解析】cancel register(注销旧车的注册) (2)register(车辆注册) (3)return(归还) (4)lost report(遗失报告) [分析] 根据题意可以分析出车辆的状态和事件,例如根据“车库不定期地购买并注册新车供用户借用,也可将报废的旧车注销以停止租用”,可以得出(1)、(2)空分别是注销旧车的注册和车辆注册。(3)空可以从在库状态和在借状态的合理推断,得出从在借状态到在库状态只有一种事件——“归还”。从在借状态到终结状态,也只有一种可能性,那就是遗失。
问答题
【问题2】
分析用户的状态和事件,指出图2-2中的(5)、(6)、(7)、(8)分别是什么? (注意,用户与车辆在状态图中的关系)。
【正确答案】
【答案解析】cancel register(注销用户的注册) (6)borrow/n+1(借车/拥有车的数量+1) (7)penalty and n=0(罚款并且拥有车的数量为0) (8) 3 [分析]根据题意“注销用户之前,该用户必须归还所有借的车,或者报失并接受罚款”,得出从“No Car'’到终结状态的事件(5)空是cancel register(注销用户的注册)。根据从“No Car”到“Has Car”的事件(6)空是borrow(借车),同时已知用户可以借多辆车,当前拥有车n辆,所以需要n+1。根据“若用户借的车丢失,在罚款处理之前不能借车”可知(7)空是penalty(罚款),同时状态从“Has Car”到达“No Car”说明n=0。根据“每个用户最多可同时借3辆车”,可以得出(8)空为3。
问答题
【问题3】
指出UML中活动图的含义,并说明活动图和状态图的区别与联系。
【正确答案】
【答案解析】活动图(activity diagram)显示动作及其结果。活动图着重描述操作(方法)实现中所完成的工作以及用例实例或对象中的活动。活动图是状态图的一个变种,与状态图的目的有一些小的差别,活动图的主要目的是描述动作(执行的工作和活动)及对象状态改变的结果。当状态中的动作被执行(不像正常的状态图,它不需指定任何事件)时,活动图中的状态(称为动作状态)直接转移到下一个阶段。活动图和状态图的另一个区别是活动图中的动作可以放在泳道中。泳道聚合一组活动,并指定负责人和所属组织。活动图是另一种描述交互的方式,描述采取何种动作,做什么(对象状态改变),何时发生(动作序列),以及在何处发生 (泳道)。 活动图可以用作下述目的: 1.描述—个操作执行过程中(操作实现的实例化)所完成的工作(动作)。这是活动图最常见的用途。 2.描述对象内部的工作。 3.显示如何执行一组相关的动作,以及这些动作如何影响它们周围的对象。 4.显示用例的实例是如何执行动作以及如何改变对象状态。 说明一次商务活动中的工人(角色)、工作流、组织和对象是如何工作的。 [分析]所有的系统均有静态结构和动态行为。结构可以用静态模型元素来描述,如类、关系、节点和构件。行为描述结构内的元素如何交互。通常情况下,这些交互是确定的且可以建立模型。抽象系统的动态行为也称为动态建模,UML支持动态建模。在UML中有 4类图,每一类用于不同的目的:状态、序列、协作和活动。状态图被用来描述类(也可以用于子系统或整个系统)中的行为和内部状态。它着眼于描述随着时间的改变,对象如何改变其状态。状态的改变起决于出现的事件,状态中执行的行为和动作,状态转移等。事件可能是条件成真,接收一个信号或一个操作调用或经过指定时间。序列图主要用来描述在指定情节中一组对象是如何交互的。它着眼于消息序列,也就是说,在对象间如何发送和接收消息。序列图有两个坐标轴:纵坐标轴显示时间,横坐标轴显示有关的对象。序列图中最基本的东西是时间。协作图主要用来描述对象在空间中的交互,即除了动态交互,它也直接描述对象是如何链接在一起的。在协作图中没有时间轴,因而将消息按序编号。