import java.util.Random; import java.util.ArrayList; public class Client { public static void main(String[] args) { ArrayList bank = new ArrayList(); openBank(bank); business(bank); display(bank); billingCycle(bank); display(bank); } private static void openBank(ArrayList bank) { Random gen = new Random(); int nbrAccts = 17 + gen.nextInt(21); for (int k = 1; k <= nbrAccts; k++) { double amount = 2000.0 + gen.nextInt(6) * 1000; BankAccount acct; if ( gen.nextBoolean() ) acct = new CheckingAccount(amount); else { acct = new SavingsAccount(); acct.deposit( amount ); } bank.add( acct ); } } private static void business(ArrayList bank) { Random gen = new Random(); for (BankAccount acct : bank) { for (int nTran = gen.nextInt(8) ; nTran > 0; nTran--) { if ( gen.nextBoolean() ) acct.deposit(500.00); else acct.withdraw(500.00); } } } private static void billingCycle(ArrayList bank) { for (BankAccount acct : bank) if (acct instanceof SavingsAccount) ( (SavingsAccount)acct ).addInterest(); else ( (CheckingAccount)acct ).applyFees(); } private static void display(ArrayList bank) { System.out.println(); for (BankAccount acct : bank) System.out.println(acct); } }