Complete the classes CheckingAccount and SavingsAccount which are both subclasses of the BankAccount class.
/** <<< THIS CLASS IS COMPLETE >>> * A bank account has a balance that can be changed by * deposits and withdrawals. */ public class BankAccount { private double balance; /** * Constructs a bank account with a zero balance. */ public BankAccount() { balance = 0; } /** * Constructs a bank account with a given balance. */ public BankAccount(double initialBalance) { balance = initialBalance; } /** * Deposits money into the bank account. */ public void deposit(double amount) { balance = balance + amount; } /** * Withdraws money from the bank account. */ public void withdraw(double amount) { balance = balance - amount; } /** * Gets the current balance of the bank account. */ public double getBalance() { return balance; } /** * Transfers money from the bank account to another account */ public void transfer(double amount, BankAccount other) { withdraw(amount); other.deposit(amount); } }
/** * <<< THIS CODE IS NOT COMPLETE >>> * CheckingAccount is a Subclass of BankAccount: * All methods are inherited. * Private instance fields must be accesed using getters * and setters. * * Note: methods can be overriden, but instance fields can NOT. * * COMPLETE METHODS: deposit, withdraw, deductFees */ public class CheckingAccount extends BankAccount { /** * keeps track of the number of account transactions made */ private int transactionCount = 0; /** * The bank allows 3 free transactions per period, * 2 dollars is charged per transaction after */ private static final int FREE_TRANSACTIONS = 3; private static final double TRANSACTION_FEE = 2.0; /** * Constructs a checking account with a given balance. */ public CheckingAccount(double initialBalance) { // call to superclass constructor // if used must be first statement in constructor super(initialBalance); // Initialize transaction count transactionCount = 0; } /** * <<< COMPLETE THE METHOD BELOW >>> * overrides deposit in superclass * increment the number of transactions * and deposite amount into account */ public void deposit(double amount) { // <<< Code Not Complete >>> } /** * <<< COMPLETE THE METHOD BELOW >>> * overrides withdraw in superclass * increment the number of transactions * and withdraw amount from account */ public void withdraw(double amount) { // <<< Code Not Complete >>> } /** * <<< COMPLETE THE METHOD BELOW >>> * resets transaction count to 0, and deducts 2 dollars * for each transaction exceeding number of * FREE_TRANSACTIONS from the bank account */ public void deductFees() { // <<< Code Not Complete >>> } }
/** * <<< THIS CODE IS NOT COMPLETE >>> * An account that earns interest at a fixed rate. */ public class SavingsAccount extends BankAccount { private double interestRate; public static final double MINIMUM_BALANCE = 10; /** * Constructs a bank account with a given interest rate. */ public SavingsAccount(double rate) { super(); interestRate = rate; } /** <<< COMPLETE THIS METHOD >>> * Constructs a bank account with a given balance * and a given interest rate. */ public SavingsAccount(double initialBalance, double rate) { // <<< CODE NOT COMPLETE >>> } /** <<< COMPLETE THIS METHOD >>> * Adds the earned interest to the account balance. */ public void addInterest() { // <<< CODE NOT COMPLETE >>> } /** <<< COMPLETE THIS METHOD>>> * overrides withdraw in the superclass * only allows withdrawel to occur if * resulting balance > MINIMUM_BALANCE */ public void withdraw(double amount) { // <<< Code Not Complete >>> } }
/** <<< THIS CODE IS COMPLETE >>> * This program tests the BankAccount class and its subclasses. */ public class BankAccountTester { public static void main(String[] args) { CheckingAccount joesAccount = new CheckingAccount(1000); joesAccount.withdraw(300); joesAccount.deposit(500); joesAccount.withdraw(100); joesAccount.withdraw(200); joesAccount.deposit(300); joesAccount.deductFees(); // Balance should be $1196 System.out.println("Joe's balance = $" + joesAccount.getBalance()); SavingsAccount janesAccount = new SavingsAccount(2000,4.2); janesAccount.withdraw(1000); // Balance should be $1000 System.out.println("Janes's balance = $" + janesAccount.getBalance()); janesAccount.withdraw(1000); // withdrawel not allowed // Balance should be $1000 System.out.println("Janes's balance = $" + janesAccount.getBalance()); janesAccount.withdraw(995); // withdrawel not allowed // Balance should be $1000 System.out.println("Janes's balance = $" + janesAccount.getBalance()); janesAccount.addInterest(); // Balance should be $1042 System.out.println("Janes's balance = $" + janesAccount.getBalance()); } }