Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Exercise 1 Creating a sub-class 1. Create a new SavingsAccount class in your project, which extends the class BankAccount. 2. Besides the instance variables and

Exercise 1 Creating a sub-class

1. Create a new SavingsAccount class in your project, which extends the class

BankAccount.

2. Besides the instance variables and methods inherited from class BankAccount, this

class must contain one instance variable of type double called interestRate. We might

need to create several objects of the new class SavingsAccount, each one with its own

balance and interest rate. Should instance variable interestRate be declared as static?

Write your answer in AnswersLab2.txt.

3. This class must also contain the following methods:

a. constructor with two parameters of type double. The method signature is thus:

public SavingsAccount(double initialAmount, double rate).

This constructor must initialize the interestRate instance variable with the value

of rate and it must also initialize the instance variable balance of class

BankAccount with the value of initialAmount (if you do not know how to do this,

please review the lecture notes on inheritance. If you still need additional help,

please see class CheckingAccount to see how to do this).

b. public getter method called getInterestRate() that returns the value of

interestRate.

c. public method calculateInterest(), which calculates one month's interest

and adds this amount to the balance; the interest is computed by multiplying

interestRate and the balance. How can you get the balance from BankAccount?

How do you add the interest to the balance of BankAccount? (If you are unsure

about how to do this, please read class BankAccount.)

d. public method toString(), which returns a string representation of the

instance variables; this string must be of the form "SavingsAccount: balance

$123, interest rate 0.12".

4. Add this test harness (copy and paste it) to your SavingsAccount class.

public static void main(String[] args) {

SavingsAccount myAccount = new SavingsAccount(100.0,0.15);

myAccount.calculateInterest();

System.out.println(myAccount.toString());

}

5. Run the program and write the output in AnswersLab2.txt.

Exercise 2 Experimenting with inheritance

1. Open TestBankAccounts.java. This class has a main method that creates several bank

account objects of the three types: BankAccount, CheckingAccount, and

SavingsAccount.

2. In each step of this exercise, you will be adding statements to the main method and

running it after each addition. Answer the questions at each step and write your answers

in AnswersLab2.txt. If there is a compilation error, make sure you comment out the

offending statement before advancing to the next step of this exercise.

3. Which method(s) of the class CheckingAccount demonstrate overriding? Which

demonstrate overloading?

4. In the main method, add the statement bacc0 = chacc1; which makes the

BankAccount variable bacc0 reference the CheckingAccount object referenced by

chacc1. Is this legal? Why?

5. Add the statement chacc1 = bacc1;. Is this legal? Why not? If not, comment it out.

6. Add the statement BankAccount bacc2 = new CheckingAccount(200.0); then

add the statement chacc1 = bacc2;. Fix this last statement using casting so that it

compiles and runs.

7. Add statements to invoke method deductFees(), without parameters, on all variables

bacc1, chacc1, and sacc1. On which type of objects was this legal? Why?

8. Try to fix the above compilation errors through casting:

((CheckingAccount)variable).deductFees(). Which compilation error(s) could

be fixed this way? Which one(s) could not be fixed this way? Why?

9. If there are compilation errors (cannot be more than 1), comment out the line causing the

error. Then run the program. Did the program run? If the program crashed, why did it

crash?

10. If the program crashed, comment out the statement that caused the program to crash.

Add the statement chacc1.deposit(100.0); Your program should compile and run.

11. Now make the following change to CheckingAccount.java: in the code for the deposit

method, change super.deposit(amount); to deposit(amount); Compile and

run. What was the runtime error? Think about why this error occurred.

Exercise 3 Experimenting with polymorphism

1. Open BankMachine.java and read over the code in its main() method.

2. The program produces two compilation errors, one when invoking method

getTransactionCount() and the other when invoking getInterestRate().

Explain why the compiler issues these two errors. Write your answer in AnswersLab2.txt.

3. In the statement String accountInfo = newAcc.toString(); just by looking at

the code can you tell whether the method toString() being invoked is from

SavingsAccount or from CheckingAccount? Explain your answer and write it in

AnswersLab2.txt.

4. Modify the code so that newAcc.getTransactionCount() is invoked only if newAcc

references an object of the class CheckingAccount, and

newAcc.getInterestRate() is invoked only if newAcc references an object of the

class SavingsAccount.

5. Run the program and verify that it works correctly for both account types (run the

program and type either 'c' or 's' so the program prints a message indicting that an

account has been created and it also prints information about the account including

either the interest rate or the number of transactions).

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Upgrading Oracle Databases Oracle Database New Features

Authors: Charles Kim, Gary Gordhamer, Sean Scott

1st Edition

B0BL12WFP6, 979-8359657501

More Books

Students also viewed these Databases questions