import java.util.ArrayList; import java.util.List; /** * Need for operations to buy. * Performs operations over balance. * If failed operations buy add {@link CodeError} in method {@link Client#addCodeError(CodeError)}. */ class Client { private int balance; private List<CodeError> codeErrors = new ArrayList<>(); private List<Product> products = new ArrayList<>(); Client(int balance) { this.balance = balance; } boolean haveAmountOnBalance(int amount) { return (balance >= amount); } int getBalance() { return balance; } void withdraw(int amount) { balance -= amount; } void addCodeError(CodeError codeError) { codeErrors.add(codeError); } List<CodeError> getCodeErrors() { return codeErrors; } void addProduct(Product product) { products.add(product); } List<Product> getProducts() { return products; } @Override public String toString() { return "Client{" + "balance=" + balance + ", codeErrors=" + codeErrors + ", products=" + products + '}'; } }