Question

In: Computer Science

The Account class Create a class named Account, which has the following private properties: number: long...

The Account class

Create a class named Account, which has the following private properties:

  • number: long
  • balance: double

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 these methods: void deposit(double amount) and void withdraw(double amount). For both these methods, if the amount is less than zero, the account balance remains untouched. For the withdraw() method, if the amount is greater than the balance, it remains 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 a private 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 (thus, a 3.5% interest rate is given as 0.035).

Modify toString() to include the interest rate.

Add a getter and setter method for apr. The setter should leave the APR untouched if given a negative value.

Write a calculateInterest() method that returns the annual interest, calculated as the current balance times the annual interest rate.

The CreditCardAccount class

This class inherits from Account and adds a private apr property, which is the annual interest rate charged on the balance. It also has a private 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 (thus, a 3.5% interest rate is given as 0.035), and credit limit. Write getters and setters for the apr and creditLimit.

Modify toString() to include the interest rate 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. Examples:

  • If your balance is $300 with a credit limit of $700, you can withdraw $900 (leaving a balance of $-600).
  • If your balance is $-300 with a credit limit of $700, you can withdraw $350 (leaving a balance of $-650).
  • If your balance is $-300 with a credit limit of $700, you can not withdraw $500, because that would then owe $800, which is more than your $700 limit.

In short, the maximum amount you can withdraw is your current balance plus the credit limit.

Add a calculatePayment() method that works as follows:

  • If the balance is positive, the minimum amount you have to pay on your card per month is zero.
  • Otherwise, your monthly payment is the minimum of 20 and (???/12)(???????)(apr/12)⋅(−balance)(???/12)(???????)(apr/12)⋅(−balance)

The Test Program

Write a program named TestAccounts that creates an array of five Account objects:

  • An Account number 1066 with a balance of $7,500.
  • A SavingsAccount number 30507 with a balance of $4,500 and an APR of 1.5%
  • A CreditCardAccount number 51782737 with a balance of $7,000.00, APR of 8%, and credit limit of $1000.00
  • A CreditCardAccount number 629553328 with a balance of $1,500.00, an APR of 7.5%, and a credit limit of $5,000
  • A CreditCardAccount number 4977201043 with a balance of -$5,000.00, an APR of 7%, and a credit limit of $10,000

Your program will use a loop to do the following for each account:

  • Deposit $2,134.00
  • Withdraw $4,782.00
  • Print the account status using toString().
    • For savings accounts, also display the annual interest
    • For credit card accounts, also display the monthly payment

Here is some sample output:

Account: 1066
Balance: $4852.00

Account: 30507
Balance: $1852.00
Interest Rate: 1.50%
Annual Interest: $27.78

Account: 51782737
Balance: $4352.00
Interest Rate: 8.00%
Credit Limit: $1000.00
Monthly Payment: $0.00

Account: 629553328
Balance: $-1148.00
Interest Rate: 7.50%
Credit Limit: $5000.00
Monthly Payment: $7.18

Account: 4977201043
Balance: $-7648.00
Interest Rate: 7.00%
Credit Limit: $10000.00
Monthly Payment: $20.00


Put the Account, SavingsAccount, and CreditCardAccount classes in the TestAccounts.java file rather than creating separate files. Please submit only one file. Upload the TestAccounts.java file here.

Solutions

Expert Solution

public class TestAccounts {
  
   public static void main(String[] args) {
      
       // creating an array of five Account objects
       Account accounts[] = {new Account(1066,7500),
               new SavingsAccount(30507,4500,0.015),
               new CreditCardAccount(51782737,7000,0.08,1000),
               new CreditCardAccount(629553328,1500,0.075,5000),
               new CreditCardAccount(4977201043L,-5000,0.07,10000)};
      
       //using a loop to deposit, withdraw and print for each account
       for(int i=0; i<accounts.length; i++) {
           accounts[i].deposit(2134);
           accounts[i].withdraw(4782);
           System.out.println("\n" + accounts[i].toString());          
       }
      
   }

   // --------------------------Account class--------------------------------
   public static class Account {
       private long number;
       private double balance;
      
       public Account() {
           number = 0;
           balance = 0;
       }
      
       public Account(long number, double balance) {
           this.number = number;
           this.balance = balance ;
       }
      
       public long getNumber() {
           return number;
       }
      
       public double getBalance() {
           return balance;
       }
      
       public void setBalance(double newBalance) {
           balance = newBalance;
       }
      
       public void deposit(double amount) {
           if(amount >= 0)                           // else leave account intact
               balance += amount;
       }
       public void withdraw(double amount) {
           if(amount >= 0 && amount <= balance)    // else leave account intact
               balance -= amount;
       }
      
       public String toString() {
           return "Account: " + number + "\nBalance: $" + String.format("%.2f",balance);
       }  
      
   }
  
   // --------------------------SavingsAccount class--------------------------------
   public static class SavingsAccount extends Account{
       private double apr;
      
       public SavingsAccount() {
       super(0,0);                // Parent constructor
           apr = 0;
       }
       public SavingsAccount(long number, double balance, double apr) {
       super(number,balance);        // Parent constructor
           this.apr = apr;
       }
      
       public String toString() {
           return super.toString() + "\nInterest Rate: " + String.format("%.2f",apr*100) + "%";
       }
      
       public double getApr() {
           return apr;
       }
      
       public void setApr(double apr) {
           if(apr>=0)                   // else leave account intact
               this.apr = apr;
       }
      
       public double calculateInterest() {
           return getBalance() * apr;
       }
      
   }
  
   // --------------------------CreditCardAccount class--------------------------------
   public static class CreditCardAccount extends Account{
       private double apr;
       private double creditLimit;
      
       public CreditCardAccount() {
           super(0,0);                // Parent constructor
           apr = 0;
           creditLimit = 0;
       }
      
       public CreditCardAccount(long number, double balance, double apr, double creditLimit) {
       super(number,balance);
           this.apr = apr;
           this.creditLimit = creditLimit;
       }
      
       public double getApr() {
           return apr;
       }
      
       public void setApr(double apr) {
           this.apr = apr;
       }
      
       public double getCreditLimit() {
           return creditLimit;
       }
      
       public void setCreditLimit(double creditLimit) {
               this.creditLimit = creditLimit;
       }
       public String toString() {
           return super.toString() +
                   "\nInterest Rate: " + String.format("%.2f",apr*100) + "%" +
                   "\nCredit Limit: $" + creditLimit +
                   "\nMonthly Payment: $" + String.format("%.2f",calculatePayment());
       }
       @Override
       public void withdraw(double amount) {
           if(amount >=0 ) {                               // else leave account intact
               double withdrawLimit = getBalance() + creditLimit;
               if(amount <= withdrawLimit)                   // else leave account intact
                   setBalance( getBalance() - amount );
           }

       }
      
       public double calculatePayment() {
           if(getBalance() > 0)
               return 0;
           else
               return Math.min( 20, (apr/12) * -getBalance() ); // choose the smallest of the two
       }  
   }
} // TestAccounts class


------------------------------------------------------------------------------
COMMENT DOWN FOR ANY QUERY RELATED TO THIS ANSWER,

IF YOU'RE SATISFIED, GIVE A THUMBS UP
~yc~


Related Solutions

The Account class Create a class named Account, which has the following private properties: number: long...
The Account class Create a class named Account, which has the following private properties: number: long balance: double 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 class Create a class named Account, which has the following private properties: number: long...
The Account class Create a class named Account, which has the following private properties: number: long balance: double 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 class Create a class named Account, which has the following private properties:
in java The Account class Create a class named Account, which has the following private properties: number: long balance: double 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 (), setBalan newBalance). There is no setNumber () once an account is created, its account number cannot change. Now implement these methods: void deposit (double amount) and void withdraw (double amount). For both these methods, if the amount is less than...
The Account class Create a class named Account , which has the following private properties:
 The Account class Create a class named Account , which has the following private properties: number: long balance: double 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: getNunber(), getBalance(), setBalance (double newBalance) . There is no setNunber() - once an account is created, its account number cannot change. Now implement these methods: void deposit (double anount) and void withdraw(double anount). For both these methods, if the amount is less than zero,...
Here is the assignment description. * Create a class named 'Account' having the following private attributes...
Here is the assignment description. * Create a class named 'Account' having the following private attributes int accountNumber; double balance; * Write a constructor with parameters for each of the attributes. * Write another constructorwith one parameter for the accountNumber. * Write getter and setter methods for each of the private attributes. * Write a method void credit(double amount) which adds the given amount to the balance. * Write a method void debit(double amount) which subtracts the given amount from...
Part 1 Create a class named Room which has two private data members which are doubles...
Part 1 Create a class named Room which has two private data members which are doubles named length and width. The class has five functions: a constructor which sets the length and width, a default constructor which sets the length to 12 and the width to 14, an output function, a function to calculate the area of the room and a function to calculate the parameter. Also include a friend function which adds two objects of the room class. Part...
(In Matlab) Create a base class named Point that has the properties for x and y...
(In Matlab) Create a base class named Point that has the properties for x and y coordinates. From this class derive a class named Circle having an additional property named radius. For this derived class, the x and y properties represent the center coordinates of a circle. The methods of the base class should consist of a constructor, an area function that returns 0, and a distance function that returns the distance between two points. The derived class should have...
7.3 (The Account class) Design a class named Account that contains: ■ A private int data...
7.3 (The Account class) Design a class named Account that contains: ■ A private int data field named id for the account. ■ A private float data field named balance for the account. ■ A private float data field named annualInterestRate that stores the current interest rate. ■ A constructor that creates an account with the specified id (default 0), initial balance (default 100), and annual interest rate (default 0). ■ The accessor and mutator methods for id, balance, and...
using C++ Please create the class named BankAccount with the following properties below: // The BankAccount...
using C++ Please create the class named BankAccount with the following properties below: // The BankAccount class sets up a clients account (using name & id), and - keeps track of a user's available balance. - how many transactions (deposits and/or withdrawals) are made. public class BankAccount { private int id; private String name private double balance; private int numTransactions; // ** Please define method definitions for Accessors and Mutators functions below for the class private member variables string getName();...
Design a class named Account that contains: A private int data field named id for the...
Design a class named Account that contains: A private int data field named id for the account. A private double data field named balance for the account. A private double data field named annualInterestRate that stores the current interest rate. A no-arg constructor that creates a default account with id 0, balance 0, and annualInterestRate 0. The accessor and mutator methods for id, balance, and annualInterestRate. A method named getMonthlyInterestRate() that returns the monthly interest rate. A method named withdraw(amount)...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT