《UML 2.5基础、建模与设计实践》(李波,姚丽丽,朱慧)【摘要 书评 试读】- 京东图书
顺序图是强调消息时间顺序的交互图,它描述了对象之间传送消息的时间顺序,用于表示用例中的行为顺序。顺序图将交互关系表示为一个二维图,横轴代表在协作中各独立对象的类元角色;纵轴是时间轴,时间沿竖线向下延伸。使用顺序图对系统建模时,可以遵循如下策略:
(1)设置交互语境,这些语境可以是系统、子系统、操作、类、用例和协作的一个脚本。
(2)通过识别对象在交互中扮演的角色,根据对象的重要性,将其按从左到右的顺序放置在顺序图中。
(3)设置每个对象的生命线。一般情况下,对象存在于交互的整个过程,但它可以在交互过程中创建和撤销。
(4)从引发某个交互的信息开始,在生命线之间按从上往下的顺序画出随后的信息。
(5)设置对象的激活期,这可以可视化实际计算发生时的时间点、可视化消息嵌套等。
(6)如果需要设置时间或空间约束,可以为每个消息附上合适的约束。
(7)给控制流的每个消息附上前置或后置条件,这可以更详细地说明这个控制流。
根据以上策略,画顺序图的一般步骤是:
(1)确定交互的范围。
(2)确定参与交互过程的活动者与对象。
(3)确定活动者、对象的生命周期。
(4)确定交互中产生的消息。
(5)细化消息的内容。
【例6.1】家用汽车都会配备那种能够遥控锁车、开锁、打开后备箱的钥匙。当按下“锁车”按钮时,汽车会闪动一下车灯并发出一声蜂鸣,说明车门上锁了。这里涉及3个类:CarOwner(车主)、CarKey(车钥匙)和Car(车)。现在我们就用这样一个实例介绍顺序图的设计。
1)应用场景
该建模场景的描述如下:
(1)从CarOwner到CarKey的请求,要求CarKey实现getButtonPress(b)操作,登记CarOwner按下的按钮(通常用b引用)。
(2)CarKey发送消息给Car,通知Car实现其pressKeyMessage(b)操作,如果按下的按钮b是“lock”,Car就会向它自己发送执行lock()操作的请求。然后,Car发送两个信号BlinkLights和Beep给CarOwner。
2)实现
首先,绘出3个匿名对象,它们分别是CarOwner、CarKey和Car的实例。然后,把它们放在顺序图的最顶层,再为每个对象绘制一条生命线,如图6.17所示。
图6.17 顺序图的初始
根据场景描述,绘制的顺序图如图6.18所示。
图6.18 汽车和车钥匙顺序图
【例6.2】ATM取款看起来是件很简单的事情,首先插入银行卡,然后按照提示输入密码,再选择“取款”,接着输入数额,最后提出现金,但是整个过程中各个对象之间要涉及很多的消息。
1)应用场景
ATM取款应用场景描述如下:
(1)银行储户将银行卡插入读卡机insertCard()。
(2)读卡机将信息传给客户管理acceptCard()。
(3)客户管理提出查询密码checkPass()。
(4)显示屏要求银行储户输入密码inputPassRequest()。
(5)储户在输入设备输入密码inputPass()。
(6)输入设备将输入的密码传递给客户管理transPass()。
(7)客户管理请求事务管理确认密码的合法性requestPassLegal()。
(8)事务管理确认密码的合法性并返给客户管理passLegal()。
(9)客户管理通过显示屏询问服务类别queryKind()。
(10)显示屏要求储户输入服务类别请求showServiceRequest()。
(11)储户输入取款请求inputTakeRequest()。
(12)输入设备向客户管理发出取款请求takeRequest()。
(13)客户管理提出取款金额qureyMoney()。
(14)显示屏向银行储户发出取款数额请求showMoneyRequest()。
(15)储户输入取款数额inputMoney()。
(16)输入设备将储户输入的数额传递给客户管理transMoney()。
(17)客户管理确认取款额数并返给显示屏queryMoney()。
(18)显示屏呈现给储户确认信息showOKRequest()。
(19)储户输入确认信息inputOK()给输入设备。
(20)输入设备将确认信息传递给客户管理OKInformation()。
(21)客户管理请求事务管理确认数额的合法性requestMoneyLegal()。
(22)事务管理确认数额的合法性并返给客户管理moneyLegal()。
(23)事务管理向点钞机发出出钞请求requestTake()。
(24)点钞机出钞票outMoney()。
(25)储户取出钞票takeMoney。
(26)取卡outCard()。
2)实现
在整个场景中,用到7个对象,分别是“银行储户”“读卡机”“显示屏”“输入设备”“客户管理”“点钞机”和“事务管理”。它们之间通过消息传递保障其功能正常运行。对应的顺序图如图6.19所示。
图6.19 ATM取款顺序图
【例6.3】在前面几章我们以图书管理系统为例进行了分析,并且已经对其静态图进行了建模。
由于图书管理员、系统管理员以及借阅者这3个参与者的参与,以及对图书的操作内容较多,因此图书管理系统中的顺序图相对较多,比如有图书管理员处理借书顺序图、图书管理员处理还书顺序图、借阅者查询书目顺序图、系统管理员添加图书顺序图、系统管理员删除书目顺序图、系统管理员添加借阅者账户顺序图等。
下面分别介绍这几种顺序图的创建。
1)图书管理员处理借书顺序图
图书管理员收到借阅者的借书申请时,首先验明借阅者的身份,如果没有问题,则查找借阅书目,如果借阅者没有超出最大借阅数量,则开始借阅并更新图书列表信息,借阅成功。图书管理员处理借书的顺序图如图6.20所示。
图6.20 图书管理员处理借书顺序图
2)图书管理员处理还书顺序图
在图书管理系统中,图书管理员处理还书时,首先是借阅者向图书管理员发出还书请求,图书管理员将读者的信息和所要归还的图书信息发送到数据库,由系统检查用户的合法性,当借阅者的信息和图书的信息都得到确认后,图书管理员修改图书信息和借阅者信息,将结果显示处理,完成还书操作。图书管理员处理还书的顺序图如图6.21所示。
图6.21 图书管理员处理还书顺序图
3)借阅者查询图书顺序图
在图书管理系统中,借阅者可以登录页面,查询图书。借阅者查询图书的顺序图如图6.22所示。
图6.22 借阅者查询图书顺序图
4)系统管理员添加图书顺序图
在图书管理系统中,要添加一本新的图书时,系统管理员需要在页面上进行添加操作,页面会将管理员的请求发送到书目中进行搜索,确认该书是否为新书,如果为新书,则将其加入图书列表中。系统管理员添加图书的顺序图如图6.23所示。
图6.23 系统管理员添加图书顺序图
5)系统管理员删除书目顺序图
当图书需要报废处理时,系统管理员可以登录到后台,查找对应的书目,在图书列表中进行删除操作,该书目对象将被彻底销毁。系统管理员删除书目的顺序图如图6.24所示。
图6.24 系统管理员删除书目顺序图
6)系统管理员添加借阅者账户顺序图
在图书管理系统中,如果有新的借阅者,则由系统管理员登录后台页面,添加借阅者信息。系统管理员添加借阅者账户的顺序图如图6.25所示。
图6.25 系统管理员添加借阅者账户顺序图