1.用数组表示多重性
练习目标-在类中使用数组作为模拟集合操作: 在本练习中,将用数组实现银行与客户间的多重关系。
任务
对银行来说,可添加Bank类。 Bank 对象跟踪自身与其客户间的关系。用Customer对象的数组实现这个集合化的关系。还要保持一个整数属性来跟踪银行当前有多少客户。
- 创建 Bank 类
2.为Bank类增加两个属性:customers(Customer对象的数组)和numberOfCustomers(整数,跟踪下一个customers数组索引)
3.添加公有构造器,以合适的最大尺寸(至少大于5)初始化customers数组。
4.添加addCustomer方法。该方法必须依照参数(姓,名)构造一个新的Customer对象然后把它放到customer数组中。还必须把numberofCustomers属性的值加1。
5.添加getNumOfCustomers 访问方法,它返回numberofCustomers属性值。
6.添加getCustomer方法。它返回与给出的index参数相关的客户。
7.编译并运行TestBanking程序。可以看到下列输出结果:
Customer [1] is Simms,Jane
Customer [2] is Bryant,Owen
Customer [3] is Soley,Tim
Customer [4] is Soley,Maria
public class Bank { private Customer[] customers ; //创建对象属性 private int numberOfCustomers; public int getNumberOfCustomers() { return numberOfCustomers; } public void setNumberOfCustomers(int numberOfCustomers) { this.numberOfCustomers = numberOfCustomers; } //在构造方法中初始化数组 public Bank() { customers = new Customer[6]; } //构造Customer对象并把它放入数组中 public void addCustomer(String f,String l) { this.customers[numberOfCustomers] =new Customer(f,l); this.numberOfCustomers+=1; } public int getnumberOfCustomers() { return this.numberOfCustomers; } //获取客户数量的方法 public Customer getcustomers(int i) { return this.customers[i]; } }
public class Customer { private String f; private String l; public String getF() { return f; } public void setF(String f) { this.f = f; } public String getL() { return l; } //重写toString方法 @Override public String toString() { // TODO 自动生成的方法存根 return this.getF()+" ,"+this.getL(); } public void setL(String l) { this.l = l; } //Customer对象的构造方法 public Customer(String f,String l) { this.f =f; this.l=l; } }
public class TestBank { public static void main(String[] args) { Bank b =new Bank(); b.addCustomer("Simms","Jane"); b.addCustomer("Bryant", "Owen"); b.addCustomer("Soley", "Tim"); b.addCustomer("Soley", "Maria"); for(int i =0;i<b.getnumberOfCustomers();i++) { System.out.println("Customer" +"["+(i+1)+"]"+" "+"is"+" "+b.getcustomers(i)); } System.out.println("第三个客户是:"+b.getcustomers(2)); } }
2.用List表示多重性
练习目标-在类中使用List作为模拟集合操作: 在本练习中,将用List实现银行与客户间的多重关系。
任务
对银行来说,可添加Bank类。 Bank 对象跟踪自身与其客户间的关系。用Customer对象的List实现这个集合化的关系。还要保持一个整数属性来跟踪银行当前有多少客户。
1.创建 Bank 类
2.为Bank类增加两个属性:customers(Customer对象的List)和numberOfCustomers(整数, 当前Customer对象的数量)
3.添加公有构造器,初始化customersList。
4.添加addCustomer方法。该方法必须依照参数(姓,名)构造一个新的Customer对象然后把它放到customerList中。
5.添加getNumOfCustomers 访问方法,它返回numberofCustomers属性值。
6.添加getCustomer方法。它返回与给出的index参数相关的客户。
7.编译并运行TestBanking程序。可以看到下列输出结果:
Customer 1 is Simms,Jane
Customer 2 is Bryant,Owen
Customer 3 is Soley,Tim
Customer 4 is Soley,Maria
当前客户数量 = 4
import java.util.ArrayList; import java.util.List; public class Bank { private List<Customer>customers; //集合属性 private int numberOfCustomers; //索引属性 public Bank() { customers = new ArrayList<>(); } //往customers里面添加Customer对象 public void addCustomer(String f,String l) { Customer c =new Customer(f,l); customers.add(c); } //添加索引方法,并返回索引数 public int getNumOfCustomers() { numberOfCustomers =customers.size(); return numberOfCustomers; } public Customer getCustomer(int i) { return customers.get(i); } }
public class Customer { private String firstname; private String lastname; public String getFirstname() { return firstname; } public void setFirstname(String firstname) { this.firstname = firstname; } public String getLastname() { return lastname; } public void setLastname(String lastname) { this.lastname = lastname; } public Customer(String f,String l) { this.firstname =f; this.lastname =l; } @Override public String toString() { // TODO 自动生成的方法存根 return this.firstname+" ,"+this.lastname; } }
public class TestBanking { public static void main(String[] args) { Bank b = new Bank(); b.addCustomer("Simms", "Jane"); b.addCustomer("Bryant", "Owen"); b.addCustomer("Soley", "Tim"); b.addCustomer("Soley", "Maria"); for(int i =0;i<b.getNumOfCustomers();i++) { System.out.println("Customer"+" "+(i+1)+" "+" is"+" "+b.getCustomer(i)); } System.out.println("第二个客户是:"+b.getCustomer(1)); System.out.println("客户的数量是:"+b.getNumOfCustomers()); } }