Following the instructions in the problem statement, design and implement a Java
ID: 3771077 • 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.
Programming
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
package assignment;
import java.util.Date;
public class TestAccount {
public static void main(String[] args) {
Account ac1 = new Account();
System.out.print(ac1);
Account ac2 = new Account(1122, 20000);
System.out.print(ac2);
ac2.setAnnualInterestRate(4.5);
ac2.withdraw(2500);
ac2.deposit(3000);
System.out.print(ac2);
Account ac3 = new Account(34598755, 2754.45);
ac2.setAnnualInterestRate(2.75);
System.out.print(ac2);
}
}
class Account {
private int id;
private double balance;
private double annualInterestRate;
private Date dateCreated;
public Account() {
id = 0;
balance = 0;
annualInterestRate = 0;
dateCreated = new Date();
}
public Account(int id, double balance) {
this.id = id ;
this.balance = balance;
annualInterestRate = 0;
dateCreated = new Date();
}
public double getMonthlyInterestRate() {
return annualInterestRate / 12;
}
public double getMonthlyInterest() {
return balance * getMonthlyInterestRate();
}
public boolean withdraw(double amt) {
if(balance-amt >= 0) {
balance -= amt;
return true;
}
return false;
}
public void deposit(double amt) {
balance += amt;
}
public String toString() {
return "Account ID: " +id+
" Account Balance: $" +balance+
" Interest Rate: "+annualInterestRate+"%" +
" Date Opened: "+dateCreated.toString();
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
public double getAnnualInterestRate() {
return annualInterestRate;
}
public void setAnnualInterestRate(double annualInterestRate) {
this.annualInterestRate = annualInterestRate;
}
}
-------------output-------------
Account ID: 0
Account Balance: $0.0
Interest Rate: 0.0%
Date Opened: Sat Dec 12 06:59:09 IST 2015Account ID: 1122
Account Balance: $20000.0
Interest Rate: 0.0%
Date Opened: Sat Dec 12 06:59:09 IST 2015Account ID: 1122
Account Balance: $20500.0
Interest Rate: 4.5%
Date Opened: Sat Dec 12 06:59:09 IST 2015Account ID: 1122
Account Balance: $20500.0
Interest Rate: 2.75%
Date Opened: Sat Dec 12 06:59:09 IST 2015