序列图(Sequence Diagram)是描述对象间按照时间先后顺序交互的视图。序列图主要由参与者、消息、生命线等组成。下面给出客户在ATM机取款的序列图。
图中用到了部分组合消息类型:
- loop(循环):满足条件就重复执行,类似于程序编码中的while关键字。
- alt/else:满足条件A,就执行blockA;满足条件B,就执行blockB。类似于程序编码中的if/else语句。
- group:图中的验证密码块就是用的group关键字实现的。类似于程序中的花括号{}。
序列图中其实还有opt(可选)、par(并行)等组合消息关键字,这个例子中没有涉及到,以后有机会再补充。
@startuml ATM取款序列图
title ATM取款序列图
actor Customer
actor ATM
database DB as "银行后台"
Customer -> ATM: 取款
group 验证密码
loop times < 3 && 密码错误 || times == 0
ATM -> Customer: 提醒输入密码
Customer -> ATM: 输入密码
ATM -> DB: 发送卡号和密码
DB -> DB: 验证密码
DB -> ATM: 返回验证结果
end
alt times == 3 && 密码错误
ATM -> ATM: 吞卡
ATM -> Customer: 给出吞卡提示
else
ATM -> Customer: 提示输入取款金额
end
end
Customer -> ATM: 输入取款金额
group 验证取款金额
loop 取款金额 > 卡中余额
ATM -> Customer: 提示余额不足,请重新输入取款金额
Customer -> ATM: 输入取款金额
ATM -> DB: 发送取款金额
DB -> DB: 验证取款金额
DB -> ATM: 发送验证结果
end
end
ATM -> Customer: 给出纸币
@enduml