问答题
[说明]
某银行计划开发一个自动存提款机模拟系统(ATM System)。系统通过读卡器(Card Reader)读取ATM卡;系统与客户(Customer)的交互由客户控制台(clastomer Console)实现:银行操作员(Operator)可控制系统肩动(System Startup)和系统停止(System Shutdown);系统通过网络和银行系统(Bank)实现通信。
当读卡器判断用户已将ATM卡插入后,创建会话(Session)。会话开始后,读卡器进行读卡,并要求客户输入个人验证码(PIN)。系统将卡号和个人验证码信息送到银行系统进行验证。验证通过后,客户可从菜单选择以下事务(Transaction)。
(1)从ATM卡账户取款(Withdraw)。
(2)向ATM卡账户存款(Deposit)。
(3)进行转账(Transfer)。
(4)查询(Inquire)ATM卡账户信息。
一次会话可以包含多个事务,每个事务处理也会将卡号和个人验证码信息送到银行系统进行验证。若个人验证码错误,则转个人验证码错误处理(Invalid PIN Process)。每个事务完成后,客户可选择继续上述事务或退卡。选择退卡时,系统弹出ATM卡,会话结束。
系统采用面向对象方法开发,使用UML进行建模。系统的顶层用例图如图1所示,一次会话的序列图(不考虑验证)如图2所示。可能的消息名称列表如下表所示。
可能的消息名称列表
|
|
名称
|
说明
|
名称
|
说明
|
|
CardInserted()
|
ATM卡已插入
|
performTransaction()
|
执行事务
|
|
performSession()
|
执行会话
|
readCard()
|
读卡
|
|
readPIN()
|
读取个人验证码
|
PIN
|
个人验证码信息
|
|
Create(atm,this,card,pin)
|
为当前会话创建事务
|
create(this)
|
为当前ATM创建会话
|
|
Card
|
ATM卡信息
|
doAgain
|
执行下一个事务
|
|
ejectCard()
|
弹出ATM卡
|
|
|
解释图1中用例U3和用例Withdraw、Deposit等4个用例之间的关系及其内涵。
【参考答案】
它们之间是泛化关系。Transaction是一个抽象泛化用例,具有其他事务类型共有的属性和行为,每个具体的事务类型继承它......
(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)