Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Design an abstract class named BankAccount to hold the following data for a bank

ID: 3760969 • Letter: D

Question

Design an abstract class named BankAccount to hold the following data for a bank account:

-Account Name & Number
-Balance
-Number of deposits this month
-Number of withdrawals
-Annual interest rate
-Monthly service charges

The class should have the following methods:

Constructor:
The constructor should accept arguments for the balance and annual interest rate.

Deposit:
A method that accepts an argument for the amount of the deposit. The method should add the argument to the account balance. It should also increment the variable holding the number of deposits.

Withdraw:
A method that accepts an argument for the amount of the withdrawal. The method should subtract the argument from the balance. It should also increment the variable holding the number of withdrawals.

calcInterest:
A method that updates the balance by calculating the monthly interest earned by the account, and adding this interest to the balance. This is performed by the following formulas:

Monthly Interest Rate = (Annual Interest Rate / 12)
Monthly Interest = Balance * Monthly Interest Rate
Balance = Balance + Monthly Interest

monthlyProcess:
A method that subtracts the monthly service charges from the bal- ance, calls the calcInterest method, and then sets the variables that hold the number of withdrawals, number of deposits, and monthly service charges to zero.

Next, design a SavingsAccount class that extends the BankAccount class. The SavingsAccount class should have a status field to represent an active or inactive account. If the balance of a savings account falls below $25, it becomes inactive. (The status field could be a boolean variable.) No more withdrawals can be made until the balance is raised above $25, at which time the account becomes active again. The savings account class should have the following methods:

withdraw:
A method that determines whether the account is inactive before a withdrawal is made. (No withdrawal will be allowed if the account is not active.) A withdrawal is then made by calling the superclass version of the method.

deposit:
A method that determines whether the account is inactive before a deposit is made. If the account is inactive and the deposit brings the balance above $25, the account becomes active again. The deposit is then made by calling the superclass version of the method.

monthlyProcess:
Before the superclass method is called, this method checks the number of withdrawals. If the number of withdrawals for the month is more than 4, a service charge of $1 for each withdrawal above 4 is added to the superclass field that holds the monthly ser- vice charges. (Dont forget to check the account balance after the service charge is taken. If the balance falls below $25, the account becomes inactive.)

Explanation / Answer

Abstract class code:

package javafiles;

//Design an abstract class named BankAcccount to hold the following data for a bank account:

public abstract class BankAccount

{

// -accountBalance

private double accountBalance;

// -Number of deposits

private int deposits;

// -Number of withdrawals

private int withdrwals;

// -Annual interest rate

private double annInterest;

// -Monthly service charges

private double servCharge;

// Constructor: The constructor should accept arguments for the accountBalance and annual interest rate.

public BankAccount(double accountBalance, double annInterest)

{

this.accountBalance = accountBalance;

this.annInterest = annInterest;

}

// deposit: A method that accepts an argument for the amount of the deposit. The method should add the argument for the amount of the deposit. The method should add the argument to the account accountBalance. It should also increment the variable holding the number of deposits.

public void deposit(double amount)

{

accountBalance += amount;

deposits++;

}

// withdraw: A method that accepts an argument for the amount of the withdrawal. The method should subtract the argument from the accountBalance. It should also increment the variable holding the number of withdrawals.

public void withdraw(double amount)

{

accountBalance -= amount;

withdrwals++;

}

// calcInterest: A method that updates the accountBalance by calculating the monthly interest earned by the account ,and adding this interest to the accountBalance. This is performed according to the following formulas: Monthly InterestRate = (Annual Interest Rate / 12) Monthly Interest = accountBalance *Monthly Interest Rate accountBalance = accountBalance + MonthlyInterest

public void calcInterest()

{

double monthlyInterest = annInterest/12;

accountBalance += monthlyInterest*accountBalance;

}

// monthlyProcess: A method that subtracts the monthly service charge from the accountBalance, calls the calc Interest method, and then sets the variables that hold the number of withdrawals, number of deposits, and monthly service charges to zero.

public void monthlyProcess()

{

accountBalance -= servCharge;

calcInterest();

withdrwals = 0;

deposits = 0;

servCharge = 0;

}

// get methods

public double getaccountBalance()

{

return accountBalance;

}

public int getdeposits()

{

return deposits;

}

public int getwithdrwals()

{

return withdrwals;

}

// method for calculating service charge

protected void addservCharge(double amount)

{

servCharge += amount;

}

}

// SavingsAccount class that inherits the BankAccount class.

class SavingsAccount extends BankAccount

{

private boolean active;

public SavingsAccount(double accountBalance, double annInterest)

{

super(accountBalance, annInterest);

active = accountBalance >= 25;

}

// withdraw: A method that determines whether the account is inactive before a withdrawal is made. ) No withdrawal will be allowed if the account is not active.) A withdrawal is then made by calling the superclassversion of the method (assuming it is allowed).

public void withdraw(double amount)

{

if(active)

super.withdraw(amount);

active = (getaccountBalance() >= 25);

}

// deposit: A method that determines whether the account is inactive before a deposit is made. If the account is inactive and the deposit brings the accountBalanceabove $25, the account becomes active again. A deposit is then madeby calling the superclass version of the method.

public void deposit(double amount)

{

super.deposit(amount);

active = (getaccountBalance() >= 25);

}

// monthlyProcess: Before the superclass method is called, this method checks the number of withdrawals. If the number of withdrawals for the month is more than 4, a service charge of $1 for each withdrawal above 4 is added to the superclass field that holds the monthly service charges.(Don’t forget to check the account accountBalance after the servCharge is taken. If the accountBalance falls below $25, the account becomes inactive.

public void monthlyProcess()

{

if(getwithdrwals() > 4)

addservCharge(getwithdrwals()-4);

super.monthlyProcess();

active = (getaccountBalance() >= 25);

}

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote