版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、银行系统的分析与设计-UML应用案例,Faculty of Software Engineering ,Chongqing University Wen Junhao E-mail: Tel: 86-23-65111964(O,一、系统需求,银行是与生活紧密相关的一个机构,提供存款、取款、转帐、信用卡、代理等多种业务。 在银行设立帐户的人或机构通常被称为银行的客户。 为了简化,本次系统分析只考虑存款、取款、转帐等基本功能,根据上面对银行系统的基本需求分析,可知这个简化的银行系统至少应该具有如下功能,1、一个银行可以有多个帐户; 2、一个银行可以有多个客户; 3、一个客户可以持有多个帐户; 4、
2、一个账户可以有多个持有者; 5、可以开户;6、可以注销账户; 7、可以取钱;8、可以存钱; 9、在银行内帐户转帐; 10、不同银行的账户之间转帐,二、分析问题领域(一)、识别参与者(角色,参与者代表与系统交互的人、硬件设备或另一系统。它存在于系统的外部。 通过分析银行系统的功能需求,可以识别出3个参与者: (1)Clerk(银行职员):银行的工作人员 (2)CustomerActor(客户):任何在银行中开户的个人或组织 (3)BankActor(银行):提供存、取等业务的银行。客户可在银行中开户或销户(关闭帐户,二)、识别用例,用例:规定系统或部分系统的行为,描述系统所执行的动作序列集,并为
3、执行者产生一个可供观察的结果。 通过对需求的进一步分析,可确定系统中有如下用例存在: (1)Login(登录):验证用户身份。 (2)Deposit fund(存款):存钱到帐户,二)、识别用例,3)Withdraw fund(取款):从帐户中取钱。 (4)Maintain Account(管理帐户):创建帐户(开户)、删除帐户(销户)及修改帐户信息。 (5)Transfer fund(转帐) (6)Transfer fund within a bank(在银行内转帐) (7)Transfer fund between banks 其中用例(5)是(6)和(7)的父用例,系统用例图,依赖,类属
4、,三)、用例的事件流描述,用例的事件流是对完成用例行为所需的事件的描述。事件流描述了系统应该作什么,而不是描述系统应该怎样做。 下面对前面识别出的用例逐个进行描述,1、“登录”活动图,2、“存款”的活动图,3、“取款”的活动图,4、“转帐”的活动图,5、开户(创建帐户)的活动图,输入客户基本信息,6、“删除帐户”的活动图,前提是待删除帐户的余额为零,对于需结息的单位帐户,还要让该帐户的余额积数为零时才可以删除,否则影响轧帐平衡,系统将不能正常工作。实际应用中要根据是何种帐户来作不同的处理。(P188图有误,7、“修改帐户”的活动图,三、静态结构模型,进一步分析系统需求,识别出类及类之间的关系,
5、确定它们的静态结构和动态行为,是面向对象分析的基本任务。 系统的静态结构模型主要用类图或对象图描述。 静态建模分三步:(1)定义类、(2)确定类的名字、属性和操作(3)确定类与类之间的关系,建立类图,一)、定义系统对象类,定义过系统需求,就可以根据系统需求来识别系统中所存在的对象。 系统对象的识别可以通过寻找系统域描述和需求描述中的名词来进行,从系统需求描述中可以找到的名词有银行(Bank)、帐户(Account)、客户(Customer)、资金(Funds),这些是对象图中的候选对象。 判断是否应该为这些候选对象创建类的方法是:是否有与该对象相关的身份和行为。如果有,则它是一个存在于模型中的
6、对象,应该为之创建类。资金没有对象,也没有与资金相关的行为,一)、定义系统对象类,从上述分析可知,系统至少具有3个重要的类:Bank、Account、Customer。 在银行中,对帐户进行存钱、取钱、转帐操作,要保留业务记录。因此在系统中还应有代表这些业务记录的对象存在:存(Deposit)、取(Withdraw)、转帐(Transfer),这三个类都是一种业务记录,故可抽象出父类:Transaction。 接着需确定这些对象的属性和行为,1)类Bank的属性和行为,bankCode: String name: String address: String Phone:String Fax:
7、String setBankCode(code: String) setName(name: String) setAddress(address: String) setPhone(phone: String) setFax(fax: String)(设置私有属性,1)类Bank的属性和行为,getBankCode(code: String) getName(name: String) getAddress(address: String) getPhone(phone: String) getFax(fax: String)(访问私有属性,2)类Account的属性和行为,bank: Ba
8、nk holder: Customer accountNo: String createDate: Date balance: float (私有属性) getHolders(): Customer newAccount(holder:Customer,balance:float):void remAccount(accountNo:String):void(销户) Withdraw(holderName:String,holderID:String,accountNo:String,money:float):float(返回取户余额) Deposit(holderName:String,ho
9、lderID:String,accountNo:String,money:float):float(返回存款户余额,2)类Account的属性和行为,transferOut(accountNo: String, bankCode: String, money: float): float transferIn(accountNo:String, bankCode: String, money: float): float newBalance(): float(计算新的帐户余额) update(): void(更新数据库中的帐户信息) save(): void(将帐户信息存储到数据库中) de
10、lete(): void(从数据库中删除帐户,2)类Account的属性和行为,closeAccount(accountNo: String): void getAccount(accountNo:String): Account(返回指定贴的帐户信息) query(holderName:String,holderID:String, accountNo:String, money:float, isSaving: Boolean):Boolean(查询存取帐户是否存在,若是取款,还要查询帐户余额是否足够,3)类Customer的属性和行为,Name: String customID: Str
11、ing address: String account: account getAccounts(): Account Query(name: String, id: String): Boolean newCustomer(name: String, id: String, address: String, account: Account ):void(创建客户对象) save(): void(将客户信息存储到数据库中) update(): void(更新DB中客户信息) hasAccount():Boolean(判断客户是否还持有帐户) delete(): void(删除DB中的客户信息
12、,4)类Transaction的属性和行为,私有属性:account: Account createDate: Date fund: float(交易金额) newTransaction(account: Account, fund: float, date: Date): void save():void(将交易记录存储到数据库中,5)类Deposit的属性和行为,继承类Transaction,无私有属性 newDeposit(account: Account, fund: float, date: Date):void(创建存款交易记录) save(): void(将存款交易记录存储到DB
13、中,6)类Withdraw的属性和行为,继承类Transaction(同样有account,createDate及交易金额fund属性)。 无私有属性。 newWithdraw(account: Account, fund: float, date: Date): void(创建新的取款交易记录) save(): void(将取款交易记录存储到DB中,7)类Transfer的属性和行为,继承类Transaction transferAccountNo: String transferBank:Bank newTransfer(account: Account, transferAccountN
14、o: String, transferBank: Bank, fund: float, date: Date): void(创建新的转帐交易记录,可是收帐户或付帐户) save(): void(将转帐交易记录存储到DB中,二)、定义用户界面类,用户与系统需要交互,一个用户友好的系统通常都采用直观的图形化界面,因此需要定义系统的用户界面类。 识别系统对象类和用户界面类,对于后面建立相应的系统类图和时序图都具有关键性的作用,1、类BankGUI(系统的主界面,是系统的主界面,含有存、取、转、开、销、改等相应操作按钮,当程序退出时,主界面窗口关闭。 newBankGUI(): void(创建系统主界
15、面) deposit(): void(按下“存款”按钮,调用该方法); withdraw(): void transfer(): void newAccount(): voiddelAccount():void modAccount(): void,类BankGUI系统主界面示例图,2、类QueryDialog(帐户查询,界面类QueryDialog是用来根据帐户的帐号查找帐户信息的对话框。当按下主窗口BankGUI中的按钮“删除帐户”和“修改帐户信息”时,应先显示该帐户的基本信息(弹出对话框QueryDialog),然后才能进入删改操作。 newQDialog(): void(创建查询窗口)
16、 query(): void 执行帐户查询操作,类QueryDialog帐户查询对话示例图,3、类DWDialog(存取界面框,此对话框提示输入客户姓名、ID号、帐号、密码等相关信息。 含有两个操作按钮:存款(或取款)、取消 newDWDialog(): void创建存(取)款对话 deposit(): void(按“存款”按钮调用此方法) withdraw(): void(按“取款”按钮调用此方法,DWDialog界面(存款)示例图,DWDialog界面(取款)示例图,4、类AccountDialog(帐户信息对话框,界面类AccountDialog用来填写(开户时)或显示(删改时)帐户信息
17、(客户姓名、ID号、客户地址、帐号、金额、存款各类等)的对话框。 含有“创建”(或“删除”或“修改”)和“取消”两个操作按钮。 newADialog():void(创建填写信息窗口) newADialog(account:Account): void(显示) newAccount(): void(按下“创建”按钮调用此方法) delAccount(): void modAccount(): void(类似,界面类AccountDialog示例图1,界面类AccountDialog示例图2,当按下主窗口的“注销帐户”或“修改帐户信息”按钮时,对话框QueryDialog弹出,操作员填写帐号并确定
18、提交后,系统弹出对话框AccountDialog,显示帐户的详细信息,界面类AccountDialog示例图3,5、类TransferDialog(转帐信息填写对话框,当按下主窗口BankGUI中的按钮“转帐”时,弹出此转帐对话框,银行职员填写转出、转入帐户信息及转帐金额等,然后OK。 newTDialog(): void Transfer(): void(提交转帐对话框内容后,该方法被调用,类TransferDialog示例图,6、类LoginDialog(登录对话框,界面类LoginDialog是用来输入用户名和密码的对话框。在系统启动时弹出提示用户输入验证信息。 newLDialog()
19、: void(创建用于输入用户名和密码的对话框) submit(): void(提交对话框内容) validate(name: String, pass: String):Boolean (验证用户名和密码是否正确,类LoginDialog示例图,三)、建立类图,识别出系统中的类后,还要识别出类间的关系(关联、聚合、组合、类属、依赖、实现关系,前面已讲过),然后就可以建立类图了。 在处理复杂问题时,通常使用分类的方法来有效地降低问题的复杂性。在面向对象建模技术中,也可以采用同样的方法将客观世界的实体映射为对象,并归纳成类。类、对象及它们之间的关系是面向对象技术中最基本的元素。类图是面向对象系统
20、最常用的图,类图描述了类集、接口集、协作及它们之间的关系。 类间的关系如下图所示,银行简化系统类图,四)、建立数据库模型,在分析和设计系统的静态结构模型时需要进行数据分析和数据库设计。 从上述系统类图可知,本系统有6个实体类:Account、Customer、Bank、Deposit、Transfer、Withdraw,其中类Deposit、Transfer、Withdraw是抽象类Transaction的子类,类Customer和类Account之间存在“多对多”的关联关系,类Bank和类Account之间具有“一对多”的组合关系,类Account和类Transaction之间存在“一对多”的关联关系。 根据ER模型转换为关系模型的原理可得如下图,银行系统数据库逻辑模型,四、动态行为模型,系统的动态行为模型可以用交互作用图(时序图和协作图统称交互作
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030全球云计算基础设施投资风险评估系统设计运营模式业务版
- 2025-2030先进激光切割系统产业链市场供需关系及投资潜力分析
- 2025-2030先进机器人制造技术与行业应用前景及融资路径分析
- 2025-2030先进传感器制造行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030健身房连锁行业市场供需现状分析及投资发展前景规划研究报告
- 培训课件可以折叠起来吗
- 定期员工健康体检工作标准流程
- 中学语文学科教育发展规划方案
- 项目启动流程及文档模板下载
- 小学体育踢毽子技能训练方案
- 2025年安吉县辅警招聘考试真题汇编附答案
- 物业管理条例实施细则全文
- 电化学储能技术发展与多元应用
- 2026年安全员之C证(专职安全员)考试题库500道及完整答案【夺冠系列】
- 课堂翻转教学效果调查问卷模板
- 铜陵市郊区2025年网格员笔试真题及答案解析
- 掩体构筑与伪装课件
- 2026年广东省春季高考模拟数学试卷试题(含答案解析)
- 微带贴片天线基础知识
- 部编版初三化学上册期末真题试题含解析及答案
- GB/T 46561-2025能源管理体系能源管理体系审核及认证机构要求
评论
0/150
提交评论