Following the instructions in the problem statement, design and implement a Java
ID: 3766559 • Letter: F
Question
Following the instructions in the problem statement, design and implement a Java program for programming exercise 9.7, page 361 (call it Account).
(The Account class) Design a class named Account that contains:
A private int data field named id for the account (default 0).
A private double data field named balance for the account (default 0).
A private double data field named annualInterestRate that stores the current
interest rate (default 0). Assume all accounts have the same interest rate.
A private Date data field named dateCreated that stores the date when the
account was created.
A no-arg constructor that creates a default account.
A constructor that creates an account with the specified id and initial balance.
The accessor and mutator methods for id, balance, and annualInterestRate.
The accessor method for dateCreated.
A method named getMonthlyInterestRate() that returns the monthly
interest rate.
A method named getMonthlyInterest() that returns the monthly interest.
A method named withdraw that withdraws a specified amount from the
account.
A method named deposit that deposits a specified amount to the account.
Draw the UML diagram for the class and then implement the class. (Hint: The
method getMonthlyInterest() is to return monthly interest, not the interest rate.
Monthly interest is balance * monthlyInterestRate. monthlyInterestRate
is annualInterestRate / 12. Note that annualInterestRate is a percentage,
e.g., like 4.5%. You need to divide it by 100.)
Write a test program that creates an Account object with an account ID of 1122,
a balance of $20,000, and an annual interest rate of 4.5%. Use the withdraw
method to withdraw $2,500, use the deposit method to deposit $3,000, and print
the balance, the monthly interest, and the date when this account was created.
Next, develop a test program in a separate file (call it TestAccount) to create account object with ID 1122 as stated in the problem statement. Test the program and make sure it works properly.
Now, add method toString()to class Account to allow the user to printout a meaningful description of an Account object using all of it instance valuables. For example, the following statement
System.out.print(myObject);
on object myObject would display the account information.
Account ID: 34598755
Account Balance: $2754.45
Interest Rate: 2.75%
Date Opened: Sun Nov 2 14:18:16 EDT 2014
Here is an example of toString()method:
//-----------------------------------------------------------------------------
// Returns a string representation of student object using name and studentID.
//-----------------------------------------------------------------------------
public String toString(){
// name and studentID are instance variables in class Student
return ("The student name is " + name + ", and the ID is " + studentID); }
Now, modify the test program to create 2 more account objects (say myAccout and yourAccount) with different initial balance values. Test all class methods on these 2 objects in logical order and display meaningful information after each method call. Document your code, and organize and space the outputs properly. Use escape characters and formatting objects when applicable.
Explanation / Answer
import java.util.Date;
public class AccountProblem
{
public static void main(String[] args)
{
//create an instance object of class Stock
Account myAccount = new Account(1122, 20000.00, 0.045);
myAccount.withdraw(2500.00);
myAccount.deposit(3000.00);
//display balance, monthly interest and date of account
System.out.println("Balance: " + myAccount.balance);
System.out.println("Monthly Interest: " + myAccount.getMonthlyInterestRate());
//System.out.println("Account created on: " + myAccount.dateCreated);
java.util.Date dateCreated = new java.util.Date();
System.out.println("Account created on: " + dateCreated.toString());
}
}
class Account
{
//define var1, var2
int id;
double balance;
double annualInterestRate;
Date dateCreated;
//no arg constructer
Account()
{
id = 0;
balance = 0.0;
annualInterestRate = 0.0;
}
//constructor with specific id and initial balance
Account(int newId, double newBalance)
{
id = newId;
balance = newBalance;
}
Account(int newId, double newBalance, double newAnnualInterestRate) {
id = newId;
balance = newBalance;
annualInterestRate = newAnnualInterestRate;
}
//accessor/mutator methods for id, balance, and annualInterestRate
public int getId()
{
return id;
}
public double getBalance()
{
return balance;
}
public double getAnnualInterestRate()
{
return annualInterestRate;
}
public void setId(int newId)
{
id = newId;
}
public void setBalance(double newBalance)
{
balance = newBalance;
}
public void setAnnualInterestRate(double newAnnualInterestRate)
{
annualInterestRate = newAnnualInterestRate;
}
//accessor method for dateCreated
public void setDateCreated(Date newDateCreated)
{
dateCreated = newDateCreated;
}
//define method getMonthlyInterestRate
double getMonthlyInterestRate()
{
return annualInterestRate/12;
}
//define method withdraw
double withdraw(double amount)
{
return balance -= amount;
}
//define method deposit
double deposit(double amount)
{
return balance += amount;
}
}