问答题
阅读下列说明和UML图,回答问题。
[说明]
某企业为了方便员工用餐,餐厅开发了一个订餐系统(Cafeteria Ordering System,COS),企业员工可通过企业内联网使用该系统。
企业的任何员工都可以查看菜单和今日特价。
系统的顾客是注册到系统的员工,可以订餐(如果未登录,需先登录)、注册工资支付、预约规律的订餐,在特殊情况下可以覆盖预订。
餐厅员工是特殊顾客,可以进行备餐、生成付费请求和请求送餐,其中对于注册工资支付的顾客生成付费请求并发送给工资系统。
菜单管理员是餐厅特定员工,可以管理菜单。
送餐员可以打印送餐说明,记录送餐信息(如送餐时间)以及记录收费(对于没有注册工资支付的顾客,由送餐员收取现金后记录)。
顾客订餐过程如下。
(1)顾客请求查看菜单。
(2)系统显示菜单和今日特价。
(3)顾客选菜。
(4)系统显示订单和价格。
(5)顾客确认订单。
(6)系统显示可送餐时间。
(7)顾客指定送餐时间、地点和支付方式。
(8)系统确认接收订单,然后发送Email给顾客以确认订餐,同时发送相关订餐信息通知给餐厅员工。
系统采用面向对象方法开发,使用UML进行建模。系统的顶层用例图和一次订餐的活动图初稿分别如图10.13和图10.14所示。
[问题1]
根据说明中的描述,给出图10.13中A1和A2所对应的参与者。
[问题2]
【正确答案】[问题1] A1:顾客 A2:菜单管理员
[问题2]
①查看今日特价,参与者:员工
②注册工资支付,参与者:顾客
③生成付费请求并发送给工资系统,参与者:餐厅员工
④管理菜单,参与者:菜单管理员
[问题3] (1)请求登录 (2)注册到系统 (3)发送订单信息(4)生成订单
[问题4]
泛化关系。
泛化是一种特殊/一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象。本题中顾客和员工就是特殊/一般关系,且说明中有描述“系统的顾客是注册到系统的员工”。
【答案解析】[要点解析] 该题以订餐系统为题材,考查考生对UML用例图、活动图的掌握。UML中各种图的用法是软件设计师考查的重点。
[问题1]
由说明中的“系统的顾客是注册到系统的员工,可以订餐(如果未登录,需先登录)、注册工资支付、预约规律的订餐,在特殊情况下可以覆盖预订”可知A1是顾客。由图10.13可知A2和送餐员都属于餐厅员工,说明中又有“菜单管理员是餐厅特定员工,可以管理菜单”,显然,A2是菜单管理员。
[问题2]
仔细对照图10.13和说明的内容,标记图10.13中已经有的用例,很容易就能看出剩下的四个图10.13中没有的用例。
①说明中有“企业的任何员工都可以查看菜单和今日特价”,可是图10.13中只有“查看菜单”而没有“查看今日特价”这个用例。
②说明中有“系统的顾客是注册到系统的员工,可以订餐(如果未登录,需先登录)、注册工资支付、预约规律的订餐,在特殊情况下可以覆盖预订”,图10.13中没有显示用例“注册工资支付”。
③说明中有“餐厅员工是特殊顾客,可以进行备餐、生成付费请求和请求送餐,其中对于注册工资支付的顾客生成付费请求并发送给工资系统”,图10.13中没有显示“生成付费请求并发送给工资系统”这个用例。
④说明中有“菜单管理员是餐厅特定员工,可以管理菜单”,图10.13中没有显示“管理菜单”这个用例。
[问题3]
顾客要想选菜,必然需要先登录系统,所以(1)处为登录,登录过后就可以进入系统。但是如果没有注册则需要先注册,所以(2)处为注册到系统。顾客订餐过程的最后一步是“系统确认接受订单,然后发送Email给顾客以确认订餐,同时发送相关订餐信息通知给餐厅员工”,可知系统确认接收订单后,要发送订单信息给顾客和餐厅员工,所以(3)处为发送订单信息。顾客Email确认订餐并且餐厅员工接到订单信息后,要生成最终的订单,然后结束这次订餐活动,所以(4)处为生成订单。
[问题4]
本问题考查UML的关系。UML中有4种关系:依赖、关联、泛化和实现,其图形表示如图10.15所示。
[*]
①依赖。依赖是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义。
②关联。关联是一种结构关系,它描述了一组链,链式对象之间的连接。聚集是一种特殊的关联,它描述了整体和部分间的结构关系。
③泛化。泛化是一种特殊/一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象。用这种方法,子元素共享了父元素的结构和行为。
④实现。实现是类元之间的语义关系,其中一个类元指定了由另一个类元保证执行的契约。在两种地方要遇到实现关系:一种是在接口和实现它们的类型或构件之间;另一种是在用例和实现它们的协作之间。
本题的顾客和员工之间显然属于泛化关系,从图形也可以看出来。