Question: Considering a Java class/interface design hierarchy shown in the following diagram, design the following Java programs: BankAccount.java, Payable.java, SavingAccount.java, CheckingAccount.java and GiftCard.java. Requirements: Your Java

Considering a Java class/interface design hierarchy shown in the following diagram, design the following Java programs: BankAccount.java, Payable.java, SavingAccount.java, CheckingAccount.java and GiftCard.java.

Requirements:

Your Java class names must follow the names specified above. Note that they are case sensitive. See our template below.

BankAccount: an abstract class.

SavingAccount: a concrete class that extends BankAccount.

The constructor takes client's firstname, lastname and social security number.

The constructor should generate a number 6-digit number as the user account number.

The initial balance is 0 and the interest rate is fixed at 1.0%.

The withdraw method signature is:

public boolean withdraw(double amount).

It returns true if the amount is less or equal to the balance. Otherwise, the withdraw attempt fails and outputs a error message.The deposit method signature is:

public void deposit(double amount).

CheckingAccount: a concrete class that extends BankAccount, also implements Payable interface.

The constructor takes client's firstname, lastname, social security number and a 4-character pin.

Similary, the initial balance is 0 and its interest rate is fixed at 0.1%.

In addition, a 7-digit account number is randomly generated of a new client.

The withdraw method signature is:

public boolean withdraw(double amount).

It returns true if the amount is less or equal to the balance. Otherwise, the withdraw attempt fail s and outputs a error message.The deposit method signature is:

public void deposit(double amount).

The makePayment method signature is:

public boolean makePayment(double amount, String name, String pin).

It returns true if the amount is less or equal to the balance. And a message is printed for the payment.

It returns false if the pin check fails.

It returns false if the balance is not sufficient to make the payment.

GiftCard: a concrete class that implements Payable interface.

The constructor takes the amount and a 4-character pin number.

The makePayment method signature is:

public boolean makePayment(double amount, String name, String pin).

It returns true if the balance is sufficient and a confirmation messages is printed.

Otherwise, an error message should show the balance is not sufficient to make the payment.

Program Template:

public abstract class BankAccount { protected String firstname; protected String lastname; protected int ssn; // implement your code } public interface Payable { public boolean makePayment(double amount, String name, String pin); } public class SavingAccount extends BankAccount { private double interest; private int acctNumber; private double balance; // implement your code } public class CheckingAccount extends BankAccount implements Payable { private double interest; private int acctNumber; private double balance; private String pin; // implement your code } public class GiftCard implements Payable { private String pin; private double balance; // implement your code } 

Testing:

A test program is given below. Your programs should work with this test program. A sample result is allow provided.

public class Test { public static void main(String[] args) { BankAccount[] accts = { new SavingAccount("Cody", "Allen", 3428765), new CheckingAccount("Shane", "Bieber", 3284842, "1234"), new SavingAccount("Adam", "Cimber", 8097423)}; Payable[] items = { new CheckingAccount("Corey", "Kluber", 79872487, "4321"), new GiftCard(1000, "gift")}; accts[0].deposit(500); accts[1].deposit(1200); accts[2].deposit(1500); ((CheckingAccount)items[0]).deposit(2000); for (int i = 0; i 

Sample Execution Results:

Withdraw Failed: balance too low... Successfully withdrew $800.0 Successfully withdrew $800.0 Paid Alonso with $2000.0 Payment Failed: wrong pin Payment Failed: balance too low Firstname: Cody Lastname: Allen Saving's Account Number: 395605 Balance: 500.0 Interest: 0.0 Firstname: Shane Lastname: Bieber Checking Account Number: 1797409 Balance: 400.0 Interest: 0.1 Pin: 1234 Firstname: Adam Lastname: Cimber Saving's Account Number: 684689 Balance: 700.0 Interest: 0.0 Firstname: Corey Lastname: Kluber Checking Account Number: 2877463 Balance: 0.0 Interest: 0.1 Pin: 4321 Gift Card Pin: gift Gift Card Balance: 1000.0

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!