/* extended version including sample answers for exercises */ public class BankAccount { private int balance = 0; private int id = 0; public int getBalance() { return balance; } public void deposit(int amount) { System.out.println("Depositing " + amount + "$ into account " + id); balance = balance + amount; } public void withdraw(int amount) { if (amount > balance) { amount = balance; System.out.println("No overdraft facility, will only withdraw " + amount + "$ from account " + id); } System.out.println("Withdrawing " + amount + "$ from account " + id); balance = balance - amount; } public int transaction(int amount) { if (amount > 0) deposit(amount); else withdraw(-amount); return balance; } public String toString() { return ""; } private static int idCounter = 0; // called a "static factory" //public static BankAccount openAccount() { // BankAccount newAccount = new BankAccount(); // newAccount.id = idCounter++; // System.out.println("Created new account with Id = " + newAccount.id); // return newAccount; //} public BankAccount() { id = idCounter++; System.out.println("Created new account with Id = " + id); } public BankAccount(int initialBalance) { id = idCounter++; System.out.println("Created new account with Id = " + id); transaction(initialBalance); } }