05继承与多态编程练习.doc_第1页
05继承与多态编程练习.doc_第2页
05继承与多态编程练习.doc_第3页
05继承与多态编程练习.doc_第4页
05继承与多态编程练习.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C#面向对象程序设计实验指导及报告书姓 名:_学 号:_班 级:_指导教师:_计算机与电子信息工程系2013实验五 继承与多态编程练习一、实验目的1了解类之间的关系,能区分关联关系中的聚合和组合的区别;2学习并掌握使用多个类对象构建一复杂系统。3理解继承的含义,掌握派生类的定义方法和实现;4掌握抽象类和抽象方法的使用;5编写体现类的继承性的程序;6. 掌握多态性的概念并能编写体现类多态性的程序。二、实验内容1、创建一个应用程序,实现下面的UML图。Step1:实现银行帐户Account类:1)私有的属性balance:用于保存帐户中的当前余额。2)公有带参构造方法:对balance 属性进行了初始化。3)公有方法getBalance: 用于取得当前帐户余额。4)公有方法deposit: 用于把数量为amount 的现金存储到当前帐户中。5)公有方法withdraw: 用于从当前帐户中提取数量为amount 的现金。 Account类实现代码:Step2:实现Customer类UML图中,Account类和Customer类之间的关系是聚合,即Account类的对象作为Customer类的成员,图中箭头上方的是对象名,两端的1表示一对一关系,即一个Customer类的对象含有一个Account类的类对象作为成员。1)私有属性:firstName, lastName和account 2)公有的带参构造方法:用于对firstName, lastName属性进行了初始化。3)公有的成员方法getFirstName:返回firstName的属性4)公有的成员方法getLastName:返回lastName的属性。5)公有的成员方法setAccount:对对象成员account 进行设置6)公有的成员方法getAccount: 取得对象成员account 的值 Customer类实现代码:Step3:实现Bank类bank对象只是简单地记住它和它的客户之间的联系。通过一个Customer数组来实现这个一对多的聚合关系。还需要设置一个整型的属性来存放当前银行中客户的数目。1)私有属性:customers :一个Customer类的对象数组。numberOfCustomers:银行当前客户的数量,每增加一个客户,其值加一。 2)公有的构造方法:用适当的数组长度对customers对象数组进行初始化。3)公有的成员方法addCustomer:通过参数(first name, last name)创建一个新的Customer对象,并把它存放在customers对象数组中。 同时它必须增加numberOfCustomers的值。4)公有的成员方法getNumOfCustomers:返回numberOfCustomers 属性的值。5)公有的成员方法getCustomer成员方法:返回对象数组中指定下标为index的customer对象。 Customer类实现代码:Step4:编写测试程序如下public class Testing public static void Main(String args) Bank bank=new Bank(); bank.addCustomer(Simms,Jane); bank.addCustomer(Bryant,Owen); bank.addCustomer(Soley,Tim); bank.addCustomer(Soley,Maria); bank.getCustomer(0).setAccount(new Account(500); bank.getCustomer(1).setAccount(new Account(500); bank.getCustomer(2).setAccount(new Account(500); bank.getCustomer(3).setAccount(new Account(500); for(int i=0;ioverdraftProtection,那么整个交易应该放弃,提款失败。否则提款后的balance应为0,提款后的最大透支额度overdraftProtection应该为原有最大透支额度减去(amount-balance )。(3)再看Account类其withdraw行为要在其具体的子类中才能确定,故将其withdraw方法设计成一个抽象方法,由子类去改写。因此Account类也应重新设计成一个抽象类。Step2:具体实现参考:1、和上一题相比,Account类中的balance属性的访问控制修饰符变成了protected。其withdraw方法变成一个抽象方法,因此Account类是一个抽象类。2、SavingsAccount类设计1)定义一个double型的数据属性interestRate(利率)。 2)定义一个带有两个参数balance和interest_rate的构造方法。这个构造方法通过super(balance)调用父类的构造方法完成对balance属性的初始化。3) 增加一个addInterest()方法,将所获利息加到balance上。4)实现父类中的withdraw抽象方法。 3、CheckingAccount类1)定义一个double 型的属性(最大透支额度)。2)定义一个带有一个balance 参数的构造方法。这个构造方法通过super(balance) 调用父类的构造方法。3)定义另外一个带有两个参数的构造方法。这个构造方法通过super(balance) 调用父类的构造方法,并且对属性overdraftProtection 进行设置。4)对成员方法withdraw 进行改写,改写规则见Step1。Step3:仿照银行和客户之间的关系修改Customer类,使一个客户可以有多个帐号。Step4:编写测试程序,首先添加四个客户到银行,并分别为其添加帐号。打印报表。并对第一个客户的各个帐户进行操作以验证SavingsAccount和CheckingAccount类中withdraw方法的正确性。测试程序最终输出的结果如下: Customer Reports =Customer: Jane Smith SavingsAccount: Current balance is 500.0 Interest rate=0.03 CheckingAccount: Current balance is 500.0 OverdraftProtection=0.0 CheckingAccount: Current balance is 500.0 OverdraftProtection=500.0Customer: Owen Bryant CheckingAccount: Current balance is 200.0 OverdraftProtection=0.0Customer: Tim Soley SavingsAccount: Current balance is 1500.0 Interest rate=0.03 CheckingAccount: Current balance is 200.0 OverdraftProtection=0.0Customer: Maria Soley CheckingAccount: Current balance is 200.0 OverdraftProtection=0.0 SavingsAccount: Current balance is 150.0 Interest rate=0.03Testing account of customer No.1.Withdraw 300.00 trueWithdraw 300.00 falseBalance of account NO. 1 is 200.0Withdraw 300.00 trueWithdraw 300.00

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论