#ATM自动取款机系统概述Word格式.docx
《#ATM自动取款机系统概述Word格式.docx》由会员分享,可在线阅读,更多相关《#ATM自动取款机系统概述Word格式.docx(21页珍藏版)》请在冰豆网上搜索。
1.4
定义
账号。
在银行中,事务使用的单个账号。
账号可以为多种类型,但是至少包括支票和存款。
每个顾客可以拥有多个账号。
ATM。
一个工作站终端,使得顾客能够使用现金卡在ATM上进行自己的事务处理。
ATM同顾客进行交互,收集事务信息,并发送事务信息到中心计算机,由中心计算机确认和处理信息之后,将现金通过ATM提供给顾客。
银行。
一个金融机构,负责保存顾客的账号信息,执行授权卡通过ATM网访问账号。
银行计算机。
银行拥有的计算机,同ATM网和银行自己的现金工作站进行交互。
银行可以拥有自己的内部计算机网处理账号,但是我们只关心同网络进行交互的计算机。
现金卡。
每张卡提供给一个银行客户,授权客户可以使用ATM机访问自己的账号。
每张卡包含一个银行代码和一个卡号,银行代码根据信用卡的国际标准进行编码,卡号确定卡能够访问的账户。
一张卡不能访问客户的所有账户。
每张卡只能有一个持卡人,但是多个复本可能存在,所以必须考虑从不同的ATM机同时使用相同卡的行为。
客户。
拥有银行的一个或者多个账号的人。
客户可以包括一个人或者多个人,或者是公司。
相同的人,拥有不同银行的账号被认为是不同的客户。
11.2
ATM自动取款机系统的初始模型的创建
在RationalRoseRealTime中,创建ATM自动取款机系统模型的第1步是创建初始模型,其操作步骤如下。
(1)启动RationalRoseRealTime,在“CreateNewModel”对话框中,选择“RTJava”选项,这是因为ATM自动控制系统采用实时Java实现,需要导入Java框架。
然后单击“Open”按钮,如图11-4所示。
图11-4
定义模型框架
(2)RationalRoseRealTime将在工具集中初始化一个空的模型,标题将显示为“RationalRoseRealTime-(Untitled)”,表示这是一个新模型,还没有保存到磁盘中。
(3)保存所创建的模型,并命名为“ATM”,如图11-5所示。
这样就完成了初始模型的创建操作,下面将介绍如何创建其他UML模型。
11.4
ATM自动取款机系统的概要设计
明确需求之后,就需要开始对系统进行概要设计。
概要设计的主要输出是概要设计说明书,但在此并不介绍如何编写ATM自动取款机系统的概要设计说明书,而是分析如何基于面向对象的思想、UML和RationalRoseRealTime执行系统的概要设计。
11.4.1
分析初始类模型
通过对ATM自动取款机系统的用例模型进行分析,可以提取以下Capsule和类。
自动取款机Capsule:
ATM,由以下Capsule组成。
Ø
操作面板:
OperatorPanel。
读卡机:
CardReader。
顾客面板:
CustomerConsole。
同银行的网络连接:
NetworkToBank。
吐钱机:
CashDispenser。
现金接收器:
EnvelopeAcceptor。
收据打印机:
ReceiptPrinter。
对应于用例的Capsule。
会话类:
Session。
事务类(抽象类,复杂公共特性,支持对特定事务类型的继承):
Transaction。
ATM信用卡类:
Card。
ATM机器维护的事务日志Capsule:
Log。
基于用例分析和上述提取的Capsule和类,可以创建以下初始分析类图,以显示类同参和者及类图之间的关系,如图11-17所示。
图11-17
初始分析类图
11.4.2
创建ATM的CRC卡
CRC(Class-Responsibility-Collaborator)卡建模是一种简单且有效的面向对象的分析技术。
在一个实时系统开发项目中,包括用户、系统分析员和开发者,在建模和设计过程中,经常使用CRC卡建模,使整个开发团队普遍的理解形成一致。
CRC卡由类(Class)、职责(Responsibility)和协作(Collaborator)3部分组成。
类代表许多类似的对象。
而对象是系统模型化中关注的事物。
对象可以是人、地方、事情或任何对系统有影响的概念。
类名一般列在CRC卡的顶部。
职责是类需要知道或需要做的任何事物。
这些职责是类自身所具备的知识,或类在执行时所需要的知识。
协作是指为获取消息或协助执行活动的其他类。
在特定情形下,和指定的类按一个设想共同完成同一个(或许多)步骤。
协作的类名在CRC卡的右边排列。
在此,主要为以下Capsule和类定义CRC卡。
ATMCRC卡:
如表11-2所示,它是ATM自动取款机的顶层类,用于实现ATM操作的业务逻辑。
表11-2
ATMCRC卡
ATM
当开关打开时,启动系统
当开关关闭时,关闭系统
当顾客插入信用卡时,开始一个新的会话
提供对Session和Transaction构件的访问能力
OperatorPanel
CashDispenser
NetworkToBank
CustomerConsole
Session
CardReaderCRC卡:
如表11-3所示,用于读取现金卡的信息。
表11-3
CardReaderCRC卡
CardReader
告诉ATM信用卡什么时候插入的
从卡上读取信息
弹出信用卡
保存信用卡
Card
CashDispenserCRC卡:
如表11-4所示,该类用于处理弹出现金操作的业务逻辑。
表11-4
CashDispenserCRC卡
跟踪信用卡,采用初始金额进行初始化
报告是否有足够的金额
吐钱
Log
CustomerConsoleCRC卡:
如表11-5所示,该类用于支持用户控制台操作。
表11-5
CustomerConsoleCRC卡
显示消息
显示提示信息,从键盘接收口令
显示提示信息和菜单,从键盘接收一个选项
显示提示信息,从键盘接收输入的金额数量
对用户按下的取消键作出响应
无
EnvelopeAcceptorCRC卡:
如表11-6所示,该类用于处理现金接收器的业务逻辑。
表11-6
EnvelopeAcceptorCRC卡
EnvelopeAcceptor
从顾客接收现金
LogCRC卡:
如表11-7所示,用于记录操作日值。
表11-7
LogCRC卡
记录发送到银行的消息
记录从银行接收到的消息
记录吐的现金数
记录从顾客接收的现金数
NetworkToBankCRC卡:
如表11-8所示,用于支持ATM同银行的连接。
表11-8
NetworkToBankCRC卡
在ATM机启动时初始化同银行的连接
向银行发送消息,等待响应
在系统关闭时终止同银行的连接
Message
Balances
Status
OperatorPanelCRC卡:
如表11-9所示,用于处理操作面板的业务逻辑。
表11-9
OperatorPanelCRC卡
通知ATM将状态修改为开关状态
允许操作员定义初始现金的数量
ReceiptPrinterCRC卡:
如表11-10所示,用于支持收据打印。
表11-10
ReceiptPrinterCRC卡
ReceiptPrinter
打印收据
Receipt
SessionCRC卡:
如表11-11所示,用于支持用户会话的业务逻辑。
表11-11
SessionCRC卡
执行会话用例
如果顾客重新输入口令,则更新口令值
CardReader
CustomerConsole
Transaction
TransactionCRC卡:
如表11-12所示,用于支持用户事务操作的业务逻辑。
表11-12
TransactionCRC卡
(续表)
允许顾客选择事务类型
执行事务用例
执行非法口令扩展用例
Withdrawal
Deposit
Transfer
Inquiry
Message
NetworkToBank
Receipt
Session
WithdrawalCRC卡:
如表11-13所示,用于处理用户取款事务的业务逻辑。
表11-13
WithdrawalCRC卡
Withdrawal
执行取款事务用例相关操作
CashDispenser
DepositCRC卡:
如表11-14所示,用于处理用户存款事务的业务逻辑。
表11-14
DepositCRC卡
Deposit
执行存款事务用例相关操作
EnvelopeAcceptor
TransferCRC卡:
如表11-15所示,用于处理用户转账的业务逻辑。
表11-15
TransferCRC卡
Transfer
执行转账事务用例相关操作
InquiryCRC卡:
如表11-16所示,用于执行账户查询的业务逻辑。
表11-16
InquiryCRC卡
Inquiry
执行查询事务用例相关操作
BalancesCRC卡:
如表11-17所示,用于存储账户信息的类。
表11-17
BalancesCRC卡
表示银行返回的账户余额信息
CardCRC卡:
如表11-18所示,用于处理现金卡信息的类。
表11-18
CardCRC卡
表示顾客ATM卡的编码信息
MessageCRC卡:
如表11-19所示,用于处理操作消息的类。
表11-19
MessageCRC卡
表示在网络上发送到银行的信息
ReceiptCRC卡:
如表11-20所示,用于处理收据的类。
表11-20
ReceiptCRC卡
表示在收据上打印的信息
StatusCRC卡:
如表11-21所示,用于处理事务状态的类。
表11-21
StatusCRC卡
表示银行返回的事务状态信息
11.5
ATM自动取款机系统的详细设计和实现
11.5.1
详细设计
详细设计的一个主要任务是为类图中的类添加属性和方法。
在ATM自动取款机系统中,需要明确以下内容。
ATM类是一个活动类,也就是说,ATM对象具有自己的线程。
使用特定的信号初始化计算。
Transaction类层次包含抽象类Transaction和4个具体的子类(Withdrawal,Deposit,Transfer和Inquiry)。
Receipt类是一个抽象类,每种事务类型的completeTransaction()方法创建一个实例,包含相关的事务信息。
Status类是一个抽象类。
NetworkToBank类的Send()方法构造一个具体的实例,包含发送到银行的相关信息。
表11-22至表11-43是ATM自动取款机系统的相关类的详细设计方法。
表11-22
ATM
属
性
方
法
-id:
int
+ATM(id:
int,place:
String,bankName:
String,bankAddress:
InetAddress)
-place:
String
-bankName:
String
-bankAddress:
InetAddress
-cardReader:
CardReader
-cashDispenser:
CashDispenser
-customerConsole:
CustomerConsole
-envelopeAcceptor:
EnvelopeAcceptor
-log:
Log
-networkToBank:
NetworkToBank
-operatorPanel:
OperatorPanel
-receiptPrinter:
ReceiptPrinter
-state:
-switchOn:
boolean
-cardInserted:
-OFF_STATE:
finalint
-IDLE_STATE:
-SERVING_CUSTOMER_STATE:
finalint
+run()
+switchOn()
+switchOff
+cardInserted()
+getID():
+getPlace():
+getBankName():
+getCardReader():
+getCashDispenser():
+getCustomerConsole():
+getEnvelopeAcceptor():
+getLog():
+getNetworkToBank():
+getOperatorPanel():
+getReceiptPrinter():
-performStartup()
-performShutdown()
表11-23
CardReader
-atm:
+CardReader(atm:
ATM)
+readCard():
Card
+ejectCard()
+retainCard()
表11-24
CashDispenser
-cashOnHand:
Money
+CashDispenser(log:
Log)
+setInitialCash(initialCash:
Money)
+checkCashOnHand(amount:
Money):
+dispenseCash(amount:
Money)
表11-25
CustomerConsole
+CustomerConsole()
+display(message:
String)
+readPIN(prompt:
String):
intthrowsCancelled
+readMenuChoice(prompt:
String,menu:
String[]):
+readAmount(prompt:
MoneythrowsCancelled
表11-26
EnvelopeAcceptor
Log
+EnvelopeAcceptor(log:
+acceptEnvelope()throwsCancelled
表11-27
+Log()
+logSend(message:
Message)
+logResponse(status:
Status)
+logCashDispensed(amount:
+logEnvelopeAccepted()
表11-28
NetworkToBank
InetAddress
+NetworkToBank(log:
Log,bankAddress:
+openConnection()
+closeConnection()
+sendMessage(message:
Message,outbalances:
Balances):
Status
表11-29
OperatorPanel
+OperatorPanel(atm:
+getInitialCash():
表11-30
ReceiptPrinter
+ReceiptPrinter()
+printReceipt(receipt:
Receipt)
表11-31
Session
ATM
-pin:
-READING_CARD_STATE:
-READING_PIN_STATE:
-CHOOSING_TRANSACTION_STATE:
-PERFORMING_TRANSACTION_STATE:
-EJECTING_CARD_STATE:
-FINAL_STATE:
+Session(atm:
ATM)>
+performSession()
+setPIN(intpin)
表11-32
Transaction
#atm:
#session:
Session
#card:
#pin:
#serialNumber:
#message:
Message
#balances:
Balances
-TRANSACTION_TYPES_MENU:
finalString[]
-nextSerialNumber:
-GETTING_SPECIFICS_STATE:
-SENDING_TO_BANK_STATE:
-INVALID_PIN_STATE:
-COMPLETING_TRANSACTION_STATE:
-PRINTING_RECEIPT_STATE:
-ASKING_DO_ANOTHER_STATE:
#Transaction(atm:
ATM,session:
Session,card:
Card,pin:
int)
+makeTransaction(atm:
int):