Java du programme de la Banque. Comment permettez à vos clients d'avoir plusieurs comptes?

Je suis en train de faire un programme de la banque en java et 5 classes:
Compte, SavingsAccount (hérite de Compte), CreditAccount (hérite de Compte), de la Banque, le Client.

Le programme de travail tel qu'il est, mais je ne peux pas comprendre comment faire un client d'avoir deux comptes ou plus. Permet de dire qu'un client veut à la fois un compte de crédit ET un compte d'épargne, ou peut-être deux comptes d'épargne.

Quelqu'un peut-il me donner des suggestions? Merci

Banque classe:

public class Bank {
    String bankName;
    private Customer[] customers = new Customer[100];

    Bank(String bankName) {
        this.bankName = bankName;
    }

    public Customer[] getCustomer() {
        return customers;
    }  

   public String getBankname() {
       return bankName;
   }
}

Compte de la classe:

public abstract class Account {
    protected double balance = 0;
    protected String accountId;

   public Account() {}  //Defaultkonstruktor

   public Account(double bal, String id) {   //Konstruktor
       if (balance >= 0) {
           balance = bal;
       }
       else {
           balance = 0;
       }
       accountId = id;
   }

   public abstract void deposit(double amount); 

   public abstract void withdraw(double amount);

   public abstract double getBalance();

   public abstract String getAccountId();

   public abstract void transfer(double amount, Account account);
}

Classe SavingsAccount: (CreditAccount classe est similaire)

public class SavingsAccount extends Account{ 
    private double interest = 2.9;

    public SavingsAccount() {      //Konstruktor
        super();
    }

    public SavingsAccount(double balance, String id) {   //Konstruktor
        super(bal,id);
    }

    public void setInterest(Customer customer) {
      //code
    }

    public void setBalance(double balance) {
       //code
    }

    @Override
    public void deposit(double amount) {
       //code
    }

    @Override
    public void withdraw(double amount) {
       //code
    }

    @Override
    public double getBalance(){
       //code
    }

    @Override
    public String getAccountId(){
       //code
    }

    @Override
    public void transfer(double amount, Account account) {
       //code
    }

    public void setInterest(double interest){
       //code
    }

    public double getInterest(){
      //code
    }
}

La classe de la clientèle:

public class Customer {
    private String firstName;
    private String lastName;
    private String number;

    private SavingsAccount account = new SavingsAccount();
    private CreditAccount cAccount = new CreditAccount();

    Customer(String firstName, String lastName, String number, SavingsAccount account) {   
        this.firstName = firstName;
        this.lastName = lastName;
        this.number = number;
        this.account = account;
     }

    Customer(String firstName, String lastName, String number, CreditAccount cAccount) {   
        this.firstName = firstName;
        this.lastName = lastName;
        this.number = number;
        this.cAccount = cAccount;
    }

    public SavingsAccount getAccount() {
        return account;
    }

    public CreditAccount getCreditAccount() {
        return cAccount;
    }            
}

Principal:

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int choice;
int numberOfCustomers = 0;
boolean endProgram = false;
String bankName;   
System.out.print("Name of bank: ");
bankName = input.next();
Bank bank = new Bank(bankName);
String accountId;
SavingsAccount acc = new SavingsAccount();  
Customer[] customer = bank.getCustomer();            
do {        
System.out.println("    " + bank.getBankname() + "\n");
System.out.println("    1. See balance                          ");
System.out.println("    2. Withdraw                             ");
System.out.println("    3. Deposit                              ");
System.out.println("    4. Transfer                             ");
System.out.println("    5. Add interest                         ");
System.out.println("    6. Add new customer                     ");
System.out.println("    7. Show customers                       ");
System.out.println("    8. Change interest                      ");
System.out.println("    0. Exit                                 ");            
choice = input.nextInt();
switch(choice) {
case 1:  
//code                        
break;
case 2: 
//code
break;
case 3: 
//code
break;
case 4: 
//code
break;                   
case 5: 
//code
break;
case 6: //Add customer                   
System.out.println("Choose account: ");
System.out.println("1. Savings account");
System.out.println("2. Credit account");
choice = input.nextInt();
switch(choice) {
case 1:     //Create savings account
System.out.print("Enter amount to deposit: ");
double amount = input.nextDouble();
System.out.println("Account number is: " + numberOfCustomers);
SavingsAccount savingsAccount = new SavingsAccount(amount, String.valueOf(numberOfCustomers));                    
System.out.print("First name: ");
String firstName = input.next();
System.out.print("Last name: ");
String lastName = input.next();
System.out.print("Customer number: ");
String pnumber = input.next();
Customer newCustomer = new Customer(firstName, lastName, pnumber, savingsAccount);
customer[numberOfCustomers] = newCustomer;
numberOfCustomers++;              
break;
case 2:     //Create credit account
System.out.print("Enter amount to deposit: ");
double amount = input.nextDouble();
System.out.println("Account number is: " + numberOfCustomers);
CreditAccount creditAccount = new CreditAccount(amount, String.valueOf(numberOfCustomers));                    
System.out.print("First name: ");
String firstName = input.next();
System.out.print("Last name: ");
String lastName = input.next();
System.out.print("Customer number: ");
String pnumber = input.next();
Customer newCustomer = new Customer(firstName, lastName, pnumber, creditAccount);
customer[numberOfCustomers] = newCustomer;
numberOfCustomers++;                    
break;                            
}
break;
case 7: 
//code
break;
case 8: 
//code                    
break;  
case 0: 
//code
break;
}
} while (!endProgram);
}
  • Dans la classe de Clients, l'utilisation d'un List<Account> au lieu de champs individuels.
  • Donner au Client une collection de Comptes comme un ArrayList<Account> avec qui il peut contenir plusieurs objets de Compte. Remarque, @DaveMorrissey donne la meilleure réponse, à faire de la accountList variable de type List<Account> car il est presque toujours préférable à "le code de l'interface" plutôt que de la classe de béton, mais c'est le sujet d'une autre discussion.
InformationsquelleAutor user2939293 | 2014-09-20