- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
实验二:Java面向对象机制(2)
学院(系)名称:
姓名学号专业
班级实验项目实验二:Java面向对象机制(2)
课程名称Java语言程序设计课程代码
实验地点
批改意见成绩
教师签字:
实验内容:
某银行有许多储户,每个储户可以拥有一个或多个帐号。现要求你开发一个软件,管理
银行储户与帐号业务。见图1。
Bank类中有一个customers集合,用来存储所有的Customer(储户)对象,addCustomer
方法用于向该集合中加储户,getCustomer方法根据下标值取某个储户,getNumOfCustomers
方法取储户总数,getCustomers方法返回储户的Iterator,以便获得每个储户对象。
Customer类有一个accounts集合,用来存储某个储户的所有Account(帐号)对象,
addAccount方法用于向该集合中加帐号,getAccount方法根据下标值取该储户的某个帐号,
getNumOfAccounts方法取该储户的帐号总数,getAccounts方法返回该储户的帐号的Iterator,
以便获得每个帐号对象。
Account类是抽象类,有一个balance属性,代表余额。deposit方法表示存款,amount参
数是存款额。withdraw方法表示取款,取款额amount如果超出了余额就会抛出透支异常,我
们需要自己定义一个OverdraftException类来表示这个异常,当抛出透支异常时,不进行取款
交易,并报告用户此项错误。
SavingsAccount类表示存款帐号,继承Account,新增一个属性interestRate,代表利率。
第1页共9页
CheckingAccount类表示大额存款帐号,也继承Account,它有一个叫canOverdraft的属性,
是一个boolean值,代表该帐号能否透支(true-能,false-否);它还有一个叫maxOverdraft
的属性,表示该帐号允许的最大透支额。这个类的withdraw(取款)方法需要考虑的因素比
较多:在发生透支时,如果帐号不允许透支(canOverdraft=false),则抛出OverdraftException
异常并退出交易;如果允许透支(canOverdraft=true),但透支额(amount-balance)超过最大
透支额的话,也抛出OverdraftException异常并退出交易;只有在不发生透支或透支额小于最
大透支额时交易才能正常进行。另外,在每次进行透支交易时,最大透支额(maxOverdraft)应
做调整,以便使该帐号的最大透支额随透支次数的增加而不断减少,从而可以避免透支的滥
用,阻止信用膨胀。CheckingAccount类有两个构造方法,只带一个参数的构造方法用来初始
化balance,同时设定canOverdraft=false,maxOverdraft=0.00。
CustomerReport类用来显示每个储户的姓名以及他所持有的帐号的类别和余额,以报表的
形式输出。
根据以上描述,创建一个TestBanking类,并在其main方法中添加若干储户和帐号,然
后模拟存款、取款业务,并最终输出一张完整的报表。
采用下表中的数据进行模拟:
帐号
储户姓名
SavingsAccountCheckingAccount
文档评论(0)