Project Requirements
Part I Design ( 25 pts – data fields 1 pt, others 3 pts each) :
Design a class named Account that contains:
1. A private int data field named id for the account (default 0).
2. A private double data field named balance for the account (default 0).
3. A private double data field named annualInterestRate that stores the current interest rate (default 0). Assume all accounts have the same interest rate.
4. A private Date data field named dateCreated that stores the date when the account was created.
5. A no-arg constructor that creates a default account.
6. A constructor that creates an account with the specified id and initial balance.
7. The accessor and mutator methods for id, balance, and annualInterestRate.
8. The accessor method for dateCreated.
9. A method named getMonthlyInterestRate() that returns the monthly interest rate.
10. A method named withdraw that withdraws a specified amount from the account.
11. A method named deposit that deposits a specified amount to the account.
Part I – Testing
Use the following test program to create an Account object with an account ID of 1122, a balance of $20,000, and an annual interest rate of 4.5%. Then using the withdraw method $2,500 is withdrawn, and the deposit method is used to deposit $3,000. Finally the balance, the monthly interest, and the date when this account was created are printed.
import java.text.*;
public class TestAccount {
public static void main (String[] args) {
DecimalFormat fmt_twoDecimalPlaces = new DecimalFormat(“0.00”);
Account account = new Account(1122, 20000);
Account.setAnnualInterestRate(4.5);
account.withdraw(2500);
account.deposit(3000);
System.out.println(“Balance is ” +
fmt_twoDecimalPlaces.format(account.getBalance()));
System.out.println(“Monthly interest is ” +
fmt_twoDecimalPlaces.format( account.getMonthlyInterest() ));
System.out.println(“This account was created at ” +
account.getDateCreated());
}
}
If you have written the Account class correctly, you should see the following displayed:
Balance is $20500.00
Monthly interest is $76.88
This account was created at < day and time that you correctly run the program> ( e.g.Wed Aug 15 15:22:31 CEST 2012)
Part II Design using inheritance:
( 30 pts)Next create two subclasses of the Account class – one for the checking account (CheckingAccount) and the other for the savings account(SavingsAccount). A checking account has an overdraft limit. We will assume that you are not allowed to withdraw from a savings account until a preset date is reached. Both of the subclasses have a toString() , which return a String indicating the balance of the specific account.
( 25 pts) Finally write a test program that creates objects of CheckingAccount and SavingsAccount. Ask the user to deposit and withdraw arbitrary amount from the accounts. Be sure to check that the input is a valid input before using it. Finally, invoke the toString() method of each object to test the final balance of the objects. Please also make sure that you ask the user whether he/she would like to continue.