import java.util.Scanner; class Person { private int age; private String name; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String toString() { return this.getName(); } } class DemoPerson { public static void main(String[] args) { System.out.println(String.format("Would you like to meet a person?")); Person simon = new Person(); simon.setAge(38); simon.setName("Simon"); System.out.println(String.format("Their name is %s and their age is %d", simon.getName(), simon.getAge())); String newName = getUserInput("What shall we change their name to?"); simon.setName(newName); System.out.println(String.format("Their name is now %s, but their age remains %d", simon, simon.getAge())); // uses toString() } /** A simple wrapper to get some user input easily * @param prompt What to prompt user for * @return User's input */ public static String getUserInput(String prompt) { Scanner userInput = new Scanner(System.in); System.out.println(String.format("%s", prompt)); if (userInput.hasNextLine()) { return userInput.nextLine(); } else { return ""; } } } class BankAccount { private String name; private int accountNumber; private double balance; private static int nextAccountNumber = 0; public BankAccount(String name) { this.name = name; this.balance = 0.0; this.accountNumber = nextAccountNumber; nextAccountNumber++; } @Override public String toString() { return "BankAccount [name=" + name + ", accountNumber=" + accountNumber + ", balance=" + balance + "]"; } public int getAccountNumber() { return accountNumber; } public String getName() { return name; } public double getBalance() { return balance; } public void deposit (double amount) { this.balance += amount; } public void withdraw(double amount) { // No overdraft facilities here! if (amount <= balance) { this.balance -= amount; } } } /** * Exercise 2.4 & 2.6 - create two bank account objects and print their account * numbers, which should be 0 and 1. * * I forget the name for the implementation detail but a static member is shared across class objects / instances? */ class DemoBankAccount { public static void main(String[] args) { BankAccount account1 = new BankAccount("Jerry"); BankAccount account2 = new BankAccount("Margo"); System.out.println(String.format("%s's account number: %d", account1.getName(), account1.getAccountNumber())); System.out.println(String.format("%s's account number: %d", account2.getName(), account2.getAccountNumber())); System.out.println(String.format("Jerry will deposit £10, Margo will deposit £25")); account1.deposit(10.00); account2.deposit(25.00); System.out.println(String.format("Accounts:\n\t%s\n\t%s", account1, account2)); System.out.println(String.format("Jerry goes to the pub and needs some cash for that. Margo goes to buy new garden furniture.")); account1.withdraw(5.00); account2.withdraw(15.00); System.out.println(String.format("Accounts:\n\t%s\n\t%s", account1, account2)); } }