Consider the code below. // A typical account has a balanc…
Consider the code below. // A typical account has a balance that is a result of summing a sequence of transactions (or amounts) public class Account { private int balance; private List amounts; // Requires: true // Effects: Initializes this to have a zero balance and an empty sequence of transactions public Account() { amounts = new ArrayList(); balance = 0; if (repOk() == false) { System.out.println(“Account(): rep-inv violated”); System.exit(-1); } } // Requires: true // Effects: append amount to the sequence of transactions, and add it to balance public void customerTransaction(int amount) { amounts.add(amount); balance += amount; if (repOk() == false) { System.out.println(“customerTransaction(): rep-inv violated”); System.exit(-1); } } public int getBalance() { return balance; } // Rep-invariant1: a) amounts != null // b) balance = sum of all amounts.get(i), where 0 = 0 boolean repOk() { } (1 pt) Implement repOk() based on Rep-Invariant1. (1 pt) Give 2 example values for balance and amounts that do not violate Rep-invariant1. For each example, provide the client code. (0.5 pt) Give 2 example values for balance and amounts that do violate Rep-invariant1. (1 pt) Consider an updated Rep-invariant2. Implement repOk() based on it. // Rep-invariant2: a) amounts != null // b) balance = sum of all amounts.get(i), where 0 = 0 // d) amounts.get(i) cannot be 0, where 0