(Account Inheritance Hierarchy) Create an inheritance hierarchy that a bank might use torepresent customers’ bank accounts. All customers at this bank can deposit (i.e., credit) money intotheir accounts and withdraw (i.e., debit) money from their accounts. More specific types of accountsalso exist. Savings accounts, for instance, earn interest on the money they hold. Checking accounts,on the other hand, charge a fee per transaction (i.e., credit or debit).Create an inheritance hierarchy containing base class Account and derived classes SavingsAccount and CheckingAccount that inherit from class Account. Base class Account should include onedata member of type double to represent the account balance. The class should provide a constructorthat receives an initial balance and uses it to initialize the data member. The constructor should validate the initial balance to ensure that it’s greater than or equal to 0.0. If not, the balance should be setto 0.0 and the constructor should display an error message, indicating that the initial balance wasinvalid. The class should provide three member functions. Member function credit should add anamount to the current balance. Member function debit should withdraw money from the Accountand ensure that the debit amount does not exceed the Account’s balance. If it does, the balance shouldbe left unchanged and the function should print the message "Debit amount exceeded account balance." Member function getBalance should return the current balance.Derived class SavingsAccount should inherit the functionality of an Account, but also includea data member of type double indicating the interest rate (percentage) assigned to the Account.SavingsAccount’s constructor should receive the initial balance, as well as an initial value for theSavingsAccount’s interest rate. SavingsAccount should provide a public member functioncalculateInterest that returns a double indicating the amount of interest earned by an account.Member function calculateInterest should determine this amount by multiplying the interestrate by the account balance. [Note: SavingsAccount should inherit member functions credit anddebit as is without redefining them.]Derived class CheckingAccount should inherit from base class Account and include an additional data member of type double that represents the fee charged per transaction. CheckingAccount’s constructor should receive the initial balance, as well as a parameter indicating a feeamount. Class CheckingAccount should redefine member functions credit and debit so that theysubtract the fee from the account balance whenever either transaction is performed successfully.CheckingAccount’s versions of these functions should invoke the base-class Account version to perform the updates to an account balance. CheckingAccount’s debit function should charge a feeonly if money is actually withdrawn (i.e., the debit amount does not exceed the account balance).[Hint: Define Account’s debit function so that it returns a bool indicating whether money waswithdrawn. Then use the return value to determine whether a fee should be charged.]After defining the classes in this hierarchy, write a program that creates objects of each classand tests their member functions. Add interest to the SavingsAccount object by first invoking itscalculateInterest function, then passing the returned interest amount to the object’s creditfunction.

Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:James Kurose, Keith Ross
Chapter1: Computer Networks And The Internet
Section: Chapter Questions
Problem R1RQ: What is the difference between a host and an end system? List several different types of end...
icon
Related questions
Question

(Account Inheritance Hierarchy) Create an inheritance hierarchy that a bank might use to
represent customers’ bank accounts. All customers at this bank can deposit (i.e., credit) money into
their accounts and withdraw (i.e., debit) money from their accounts. More specific types of accounts
also exist. Savings accounts, for instance, earn interest on the money they hold. Checking accounts,
on the other hand, charge a fee per transaction (i.e., credit or debit).
Create an inheritance hierarchy containing base class Account and derived classes SavingsAccount and CheckingAccount that inherit from class Account. Base class Account should include one
data member of type double to represent the account balance. The class should provide a constructor
that receives an initial balance and uses it to initialize the data member. The constructor should validate the initial balance to ensure that it’s greater than or equal to 0.0. If not, the balance should be set
to 0.0 and the constructor should display an error message, indicating that the initial balance was
invalid. The class should provide three member functions. Member function credit should add an
amount to the current balance. Member function debit should withdraw money from the Account
and ensure that the debit amount does not exceed the Account’s balance. If it does, the balance should
be left unchanged and the function should print the message "Debit amount exceeded account balance." Member function getBalance should return the current balance.
Derived class SavingsAccount should inherit the functionality of an Account, but also include
a data member of type double indicating the interest rate (percentage) assigned to the Account.
SavingsAccount’s constructor should receive the initial balance, as well as an initial value for the
SavingsAccount’s interest rate. SavingsAccount should provide a public member function
calculateInterest that returns a double indicating the amount of interest earned by an account.
Member function calculateInterest should determine this amount by multiplying the interest
rate by the account balance. [Note: SavingsAccount should inherit member functions credit and
debit as is without redefining them.]
Derived class CheckingAccount should inherit from base class Account and include an additional data member of type double that represents the fee charged per transaction. CheckingAccount’s constructor should receive the initial balance, as well as a parameter indicating a fee
amount. Class CheckingAccount should redefine member functions credit and debit so that they
subtract the fee from the account balance whenever either transaction is performed successfully.
CheckingAccount’s versions of these functions should invoke the base-class Account version to perform the updates to an account balance. CheckingAccount’s debit function should charge a fee
only if money is actually withdrawn (i.e., the debit amount does not exceed the account balance).
[Hint: Define Account’s debit function so that it returns a bool indicating whether money was
withdrawn. Then use the return value to determine whether a fee should be charged.]
After defining the classes in this hierarchy, write a program that creates objects of each class
and tests their member functions. Add interest to the SavingsAccount object by first invoking its
calculateInterest function, then passing the returned interest amount to the object’s credit
function.

Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 9 steps with 7 images

Blurred answer
Recommended textbooks for you
Computer Networking: A Top-Down Approach (7th Edi…
Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON
Computer Organization and Design MIPS Edition, Fi…
Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science
Network+ Guide to Networks (MindTap Course List)
Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning
Concepts of Database Management
Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning
Prelude to Programming
Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education
Sc Business Data Communications and Networking, T…
Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY