In: Computer Science
The Account class
Create a class named Account, which has the following private properties:
Create a no-argument constructor that sets the number and balance to zero.
Create a two-parameter constructor that takes an account number and balance.
First, implement getters and setters: getNumber(), getBalance(), setBalance(double newBalance). There is no setNumber() -- once an account is created, its account number cannot change.
Now implement deposit(double amount) and withdraw(double amount) methods. If the amount is less than zero, the account balance remains untouched. If the amount is greater than the balance, withdraw() leaves the balance untouched.
Then, implement a toString method that returns a string with the account number and balance, properly labeled.
The SavingsAccount class
This class inherits from Account and adds an apr property, which is the annual percentage rate for interest. Write a no-argument constructor that sets the account number, balanace, and APR to zero. Write a three-argument constructor that takes an account number, balance, and interest rate as a decimal.
Add a getter and setter method for apr. The setter should leave the APR untouched if given a negative value. Modify toString() to include the interest rate. Write a calculateInterest() method that returns the current balance times the annual interest rate.
The CreditCardAccount class
This class inherits from Account and adds an apr property, which is the annual interest rate charged on the balance. It also has a creditLimit property (double) which gives the credit limit for the card. Write a no-argument constructor that sets all the properties to zero. Write a four-argument constructor that takes an account number, balance, interest rate as a decimal, and credit limit.
Override the withdraw() function so that you can have a negative balance. If a withdrawal would push you over the credit limit, leave the balance untouched.
Add getters and setters for apr and creditLimit, leaving them untouched if the setter is given a negative value. Modify toString to include the interest rate and credit limit.
Add a calculatePayment() method that returns zero if the balance is positive and the minimum of 20 and ((apr/12)∗(−balance))((apr/12)∗(−balance)) if the balance is negative.
The Test Program
Write a program named TestAccounts that creates an array of five Accountobjects:
Your program will use a loop to do the following for each account:
The program will then print the interest to be paid for the savings account and the monthly payment due for the credit card accounts.
Code:
import java.util.*;
import java.lang.*;
import java.io.*;
class Account
{
protected long number;
protected double balance;
public Account()
{
number = 0L;balance = 0;
}
public Account(long number, long balance)
{
this.number = number;this.balance =
balance;
}
public long getNumber()
{
return number;
}
public double getBalance()
{
return balance;
}
public void setBalance(double balance)
{
this.balance = balance;
}
public void deposit(double amount)
{
balance += amount;
}
public void withdraw(double amount)
{
if(amount < 0 || amount >
balance)
{
//System.out.println("Insufficient balance");
}
else
{
balance -=
amount;
}
}
public String toString()
{
return "Number: " + number + ",
Balance: " + balance;
}
public double calculatePayment()
{
return 0;
}
public double calculateInterest()
{
return 0;
}
}
class SavingsAccount extends Account
{
double apr;
public SavingsAccount()
{
number = 0;balance = 0;apr =
0;
}
public SavingsAccount(long number, double balance,
double apr)
{
this.number = number;this.balance =
balance;this.apr = apr;
}
public double getapr()
{
return apr;
}
public void setapr(double apr)
{
if(apr >= 0)
{
this.apr =
apr;
}
}
public String toString()
{
return "Number: " + number + ",
Balance: " + balance + ", APR: " + apr;
}
public double calculateInterest()
{
return balance * apr / 100;
}
}
class CreditCardAccount extends Account
{
double apr;
double creditLimit;
public CreditCardAccount()
{
number = 0;balance = 0;apr =
0;creditLimit = 0;
}
public CreditCardAccount(long number, double balance,
double apr, double creditLimit)
{
this.number = number;this.balance =
balance;this.apr = apr;this.creditLimit = creditLimit;
}
public void withdraw(double amount)
{
if(Math.abs(balance - amount) >
creditLimit)
{
//System.out.println("Insufficient funds");
}
else
{
balance -=
amount;
}
}
public double getapr()
{
return apr;
}
public void setapr(double apr)
{
if(apr >= 0)
{
this.apr =
apr;
}
}
public double getCreditLimit()
{
return creditLimit;
}
public void setCreditLimit(double creditLimit)
{
if(creditLimit > 0)
{
this.creditLimit
= creditLimit;
}
}
public String toString()
{
return "Number: " + number + ",
Balance: " + balance + ", APR: " + apr + ", Credit Limit: " +
creditLimit;
}
public double calculatePayment()
{
if(balance > 0) return 0;
else
{
return
Math.min(20, ((apr / 12) * (-balance)));
}
}
}
public class TestAccounts
{
public static void main(String args[])
{
Account[] obj = new
Account[5];//declaring 5 accout objects
int i;
obj[0] = new Account(1066L,
7500);//redeclaring each object
obj[1] = new SavingsAccount(30507L,
4500, 1.5);
obj[2] = new
CreditCardAccount(51782737L, 7000, 8, 1000);
obj[3] = new
CreditCardAccount(629553328L, 1500, 7.5, 5000);
obj[4] = new
CreditCardAccount(4977201043L, 0, 7, 3000);
for(i = 0; i < 5; i++)//run in a
loop
{
obj[i].deposit(2134);
obj[i].withdraw(4782);
System.out.println(obj[i].toString());
}
System.out.println("Interest to be
paid for account No. " + obj[1].getNumber() + " is: " +
obj[1].calculateInterest());//savingsaccount
for(i = 2; i < 5; i++)
{
System.out.println("Amount to be paid for account No. " +
obj[i].getNumber() + " is: " +
obj[i].calculatePayment());//creditcardaccount
}
}
}
Output: