05.继承与多态编程练习

时间:2022-11-24 14:09:05 作者:壹号 字数:3303字

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( bank.addCustomer(

bank.addCustomer( bank.addCustomer(

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;i

Customer c=bank.getCustomer(i);

Console.WriteLine( c.getFirstName()+ }

…… 此处隐藏63字 ……

Console.WriteLine ( acct.withdraw(150);

Console.WriteLine ( acct.deposit(22.50);

Console.WriteLine ( acct.withdraw(47.62);

Console.WriteLine ( c.getLastName()+}

}

程序输出后的结果: