練習:用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; //customers集合 private int numberOfCustomers; //記錄客戶數量 public Bank(){ //構造方法,初始化customers customers=new ArrayList<Customer>(); } public void addCustomer(String f,String l){ //方法:往customers里面添加Customer對象 Customer p=new Customer(f,l); customers.add(p); } public int getNumOfCustomers(){ //獲取客戶數量,即獲取customers的長度 numberOfCustomers=customers.size(); return numberOfCustomers; } public Customer getCustomer(int index){ //根據索引取值return customers.get(index);
}
}
public class TestBanking { public static void main(String[] args) { Bank cus=new Bank(){}; cus.addCustomer("Simms", "Jane"); cus.addCustomer("Bryant", "Owen"); cus.addCustomer("Soley","Tim"); cus.addCustomer("Soley","Maria"); for(int i=0;i<cus.getNumOfCustomers();i++){ System.out.println("Customer "+(i+1)+" is"+" "+cus.getCustomer(i)); } System.out.println("當前客戶數量="+cus.getNumOfCustomers()); System.out.println("第二個客戶是:"+cus.getCustomer(2)); } }
運行結果:
Customer類:
public class Customer { //聲明私有屬性 private String firstName; private String lastName; private Account account; //聲明構造器 Customer(){}; Customer(String f,String l){ this.firstName=f; this.lastName=l; } //聲明存取器getter/setter方法 public String getFirstName() { //firstName return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { //lastName return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } //存取器getter/setter方法——account public Account getAccount() { return account; } public void setAccount(Account acct) { this.account=acct; } @Override public String toString() { return firstName + "," + lastName; } }