【正确答案】[问题2]
这是一道要求读者掌握UML建模中序列图知识点的分析题。本题的解答思路如下。
①系统的动态行为常采用UML序列图表示,它展现了一组对象和由这组对象收发的消息,用于按时间顺序对控制流建模。要注意它强调的是时间和顺序。
②图2-26所表达的序列图有两个特征:一是它有对象生命线;二是它有控制焦点。对象生命线是一条垂直的虚线,表示一个对象的生命跨度。控制焦点是一个瘦高的矩形,表示一个对象执行一个动作所经历的时间段。矩形的顶部表示动作的开始,底部表示动作的结束。在序列图顶部水平方向画出的是参与交换的对象。
③看懂序列图之后,接着根据问题要点,查找题目中与用户开锁相关的信息。对这些关键信息进行归纳整理的结果如下:用户开锁时,只需将感应卡靠近读卡器。读卡器获取信息后将发送一个中断事件给锁控器,锁控器从读卡器读取用户卡的ID号并将该ID号信息发送到管理主机,管理主机根据数据库中存储的信息来判断用户是否具有开锁权限,若有且锁当前处于“已锁住”状态,则将锁打开;否则系统报警。
④通过以上分析,可以得出用户开锁的激发事件是:用户感应卡靠近读卡器。
⑤由于序列图是按照时间顺序组织对象之间交互活动,因此需要将这些活动按照时间顺序进行排序,并记录下参与每个活动的对象。根据以上分析结果结合图2-26已给出的信息,可以得出用户开锁涉及的活动事件如表2-20所示。
表2-20 用户开锁活动过程表 顺序 | 活动事件 | 活动对象 | | 顺序 | 活动事件 | 活动对象 | ① | 发送“中断事件” | 读卡器→锁控器 | | ⑥ | 读取锁的安全级别 | 管理主机→锁 | ② | 读取用户卡的ID号 | 锁控器→读卡器 | | ⑦ | 判断用户是否能够开锁 | 管理主机→管理主机 | ③ | 请求开锁 | 锁控器→管理主机 | | ⑧ | 通知能够开锁 | 管理主机→锁控器 | ④ | 读取锁的当前状态 | 管理主机→锁 | | ⑨ | 将锁打开 | 锁控器→锁 | ⑤ | 读取用户的开锁权限 | 管理主机→用户 | | | | | |