UML课程测验专业学号姓名一、选择题1、_B_用于接口、类和协作的行为建模,并强调对象行为的事件顺序;_C_用于系统的功能建模,并具强调对象间的控制流;_A_用于描述系统与外部系统及用户之间的交互。A.用例图B.状态图C.活动图D.类图2、在UML中,对象行为是通过交互来实现的,是对象间为完成某一目的而进行的一系列消息交换。消息序列可用两种图来表示,强调消息时间次序的图称之为_(4)_,该图的特点是_(5)_,强调参加交互的对象的组织图称之为_(6)_,这两种图是_(7)_。(4)A.活动图B.状态图C.顺序图D.通讯图(5)A.有生命线及控制焦点,重点在消息的时间顺序上B.有路径有顺序号,为了一个消息的时间顺序给消息加数字前缀C.是对系统、子系统或类的行为建模D.本质上是一个流程图,显示从活动到活动的信息流(6)A.活动图B.状态图C.顺序图D.通讯图(7)A.同构的,所以可以互相转换B.异构的,所以不可以互相转换C.强调对象行为的事件顺序,常用于对反应式系统建模D.专注于系统的动态视图,状态无法确定,所以不可以互相转换3、用UML建立业务模型是理解企业业务过程的第一步。业务人员扮演业务中的角色及其交互方式,例如航空公司的售票员是业务人员,电话售票员也是业务人员,他们之间的关系是_(8)_。在UML中,用_(9),表示企业业务的工作流。这种图显示出工作流中的步骤、决策点,以及完成每一步骤的角色和对象。(8)A.关联关系B.依赖关系C.聚集关系D.概括关系(9)A.活动图B.业务图C.用例图D.交互图4、指出右图中注释所表达的含义。AAA,BBB,CCC,DDD(A)Class,Message,Iteration,Self-Call(B)Object,Message,Iteration,Self-Call(C)Object,Message,Self-Call,Iteration(D)Class,Message,Self-Call,Iteration5、如图二所示,如果member不是platinummember,在这个活动图的执行过程中,所允许的最大并发线程数是:(A)1(B)2(C)3(D)42三、阅读下列说明和图,回答问题①至问题④。某汽车停车场欲建立一个信息系统,已经调查到的需求如下:(1)在停车场的入口和出口分别安装一个自动栏杆、一台停车卡打印机、一台读卡器和一个车辆通过传感器,示意图如下:(2)当汽车到达入口时,驾驶员按下停车卡打印机的按钮获取停车卡。当驾驶员拿走停车卡后,系统命令栏杆自动抬起;汽车通过入口后,入口处的传感器通知系统发出命令,栏杆自动放下。(3)在停车场内分布着若干个付款机器。驾驶员将在入口处获取的停车卡插入付款机器,并缴纳停车费。付清停车费之后,将获得一张出场卡,用于离开停车场。(4)当汽车到达出口时,驾驶员将出扬卡插入出口处的读卡器。如果这张卡是有效的,系统命令栏杆自动抬起;汽车通过出口后,出口传感器通知系统发出命令,栏杆自动放下。若这张卡是无效的,系统不发出栏杆抬起命令而发出告警信号。(5)系统自动记录停车场内空闲的停车位的数量。若停车场当前没有车位,系统将在入口处显示“车位已满”信息。这时,停车卡打印机将不再出卡,只允许场内汽车出场。根据上述描述,采用面向对象方法对其进行分析与设计,得到了表一所示的类/用例/状态列表、图三所示的用例图、图四所示的初始类图以及图五所示的描述入口自动栏杆行为的UML状态图。表一类/用例/状态列表用例名说明类名说明状态名说明Carentry汽车进入停车场CentralComputer停车场信息系统Idle空闲状态,汽车可以进入停车场Carexit汽车离开停车场PaymentMachine付款机器Disable没有车位ReportStatistics记录停车场的相关信息CarPark停车场,保存车位信息AwaitEntry等待汽车进入Barrier自动护栏AwaitTicketTake等待打印停车卡Carentrywhenfull没有车位时,汽车请求进入停车场EntryBarrier入口的护栏AwaitEnable等待停车场内有空闲车位ExitBarrier出口的护栏图三用例图3图四初始类图图五入口护栏的状态图①根据说明中的描述,使用表一给出的用例名称,给出图三中U1、U2和U3所对应的用例。U1:Carentry;U2:Carexit;U3:Carentrywhenfull;②根据说明中的描述,使用表一给出的类的名称,给出图四中A~D所对应的类。A:CarPark;B:Barrier;C:EntryBarrier;D:ExitBarrier;③根据说明中的描述,使用表一给出的状态名称,给出图五中S1~S4所对应的状态。S1:Idle;S2:AwaitTicketTake;S3:AwaitEnable;S4:AwaitEntry;④简要解释图三中用例U1和U3之间的extends关系的内涵。U3(Carentrywhenfull)与U1(Carentry)之间是延伸关系(或扩展关系),即描述了驾驶员触发Carentry用例时,如果车位满,该用例将合并它的延伸用例Carentrywhenfull的行为。四、阅读以下说明和图,回答问题1至问题3,将解答填入对应栏内。S公司开办了在线电子商务网站,主要为各注册的商家提供在线商品销售功能。为更好地吸引用户,S公司计划为注册的商家提供商品(Commodity)促销(Promotion)功能。商品的分类(Category)不同,促销的方式和内容会有所不同。注册商家可发布促销信息。商家首先要在自己所销售的商品的分类中,选择促销涉及的某一具体分类,然后选出该分类的一个或多个商品(一种商品仅仅属于一种分类),接着制定出一个比较优惠的折扣政策和促销活动的优惠时间,最后由系统生成促销信息并将该促销信息公布在网站上。商家发布促销信息后,网站的注册用户便可通过网站购买促销商品。用户可选择参与某一个促销(Promotion)活动,并选择具体的促销商品(Commodity),输入购买数量等购买信息。系统生成相应的一份促销订单(POrder)。只要用户在优惠活动的时间范围内,通过网站提供的在线支付系统,确认在线支付该促销订单(即完成支付),就可以优惠的价格完成商品的购买活动,否则该促销订单失效。系统采用面向对象方法开发,系统中的类以及类之间的关系用UML类图表示,图2-1是该系统类图中的一部分;系统的动态行为采用UML顺序图表示,图2-2是发布促销的顺序图。图2-1在线促销系统部分类图图2-2发布促销顺序图1、识别关联的多重度是面向对象建模过程的重要步骤。根据说明中给出的描述,完成图2-1中的(1)~(6)。4(1)0..*(2)1(3)0..*(4)1..*(5)1(6)0..*2、请从表2-1中选择方法,完成图2-2中的(7)~(10)。(7)getCategories(8)getCommodities(9)createPromotion(10)addCommodities表3-1可选消息列表3、关联(Association)和聚集(Aggregation)是UML中两种非常重要的关系。请说明关联和聚集的关系,并说明其不同点。略五、阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。已知某企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批5万元以下(不包括5万元)的采购单,副董事长可以审批5万元至10万元(不包括10万元)的采购单,董事长可以审批10万元至50万元(不包括50万元)的采购单,50万元及以上的采购单就需要开会讨论决定。采用责任链设计模式(ChainofResponsibility)对上述过程进行设计后得到的类图如图所示。classPurchaseRequest{publicdoubleAmount;//一个采购的金额publicintNumber;//采购单编号publicStringPurpose;//采购目的};classApprover{//审批者类publicApprover(){successor=null;}publicvoidProcessRequest(PurchaseRequestaRequest){if(successor!=null){successor.ProcessRequest(aRequest)(1);}}publicvoidSetSuccessor(ApproveraSuccesssor){successor=aSuccesssor;}privateApprover(2)successor;};classCongressextendsApprover{publicvoidProcessRequest(PurchaseRequestaRequest){if(aRequest.Amount=500000){/*决定是否审批的代码省略*/}else(3)super().ProcessRequest(aRequest);}};classDirectorextendsApprover{publicvoidProcessRequest(PurchaseRequestaRequest){/*此处代码省略*/}};classPresidentextendsApprover{publicvoidProcessRequest(PurchaseRequestaRequest){/*此处代码省略*/}};classVicePresidentextendsApprover{publicvoidProcessRequest(PurchaseRequestaRequest){/*此处代码省略*/}Approver-successor:Approver+SetSuccessor(aSuccesssor:Approver)+ProcessRequest(aRequest:PurchaseRequest)DirectorVicePresidentPresidentPurchaseRequest+Amount:Float+Number:Integer+Purpose:StringCongress采购单批准者主任副董事长董事长例会5};publicclassrs{publicstaticvoidmain(String[]args)throwsIOException{CongressMeeting=newCongress();VicePresidentSam=newVicePresident();DirectorLarry=newDirector();PresidentTammy=newPresident();//构造责任链Meeting.SetSuccessor(null);Sam.SetSuccessor(Tammy(4));Tammy.SetSuccessor(Meeting(5));Larry.SetSuccessor(Sam(6));//构造一采购审批请求PurchaseRequestaRequest=newPurchaseRequest();BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));aRequest.Amount=Double.parseDouble(br.readLine());(7)Larry.ProcessRequest(aRequest);//开始审批return;}}