(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.
Want to see the full answer?
Check out a sample textbook solutionChapter 19 Solutions
C How to Program (8th Edition)
- (Java) The Abstract Art Class Write an abstract class as follows: The class is named Art It inherits from the Comparable interface It has a private String member variable named name It has a private String member variable named artist It has a private int member variable called year It has a default constructor that assigns the values "No name" to name, "No artist" to artist and -1 to the year. This default constructor calls the three argument constructor. It has a three-argument constructor to assign values to the name, artist and year variables. It has a copy constructor that makes a copy of another non-null Art object It has getters and setters for the name, artist and year variables It has a toString() method that creates a string of artist, with name and year tabbed once on subsequent lines (see sample output) It has an equals method that compares this Art to another Object It has a compareTo method that compares in this order: 1) artist, 2) name, 3) year This class contains no…arrow_forwardc++ questionarrow_forward(java) The Painting Subclass Write class as follows: The class is named Painting, and it inherits from the Art class. It has a private String member variable named medium It has a default constructor that assigns the values "No name" to name, "No artist" to artist, -1 to year, and "No medium" to the medium variable. This default constructor calls the four-argument constructor. It has a four-argument constructor to assign values to the name, artist, year, and medium variables. It has a getter and settersfor the medium variable. It has a toString() method This class contains no other methods Make sure to include your name, the name of this class, our course number, and the Activity number in a Javadoc comment at the top. Make sure to write a Javadoc comment for each of these methods.arrow_forward
- Please help with this PYTHON program: Implement inheritance and polymorphism to complete this program: Design a Python class for a complex object (car, house, computer, being, container structure) Create a simple program with a menu (user input and output, text in a console) to interact with one of the components that: Instantiates an object from a class that has attributes and behaviors reflecting your design, gets basic input from a user that fills in the attributes of your object, displays basic info about your object and its behaviors, A menu item that allows the user to quit the program; saying goodbye when selected, Note: Be sure to use a loop to get back to the menu after finishing an item (other than quitting) to ask the user what to do next. Include a comment near the top of your driver's source file that describes a few tests that would show the program working correctly if you did them Thank you!arrow_forward(Java) The Sculpture Subclass Write class as follows: The class is named Sculpture, and it inherits from the Painting class. It has a private boolean member variable named humanForm It has a default constructor that assigns the values "No name" to name, "No artist" to artist, -1 to the year, "No medium" to the medium, and false to the humanForm variable. This default constructor calls the five argument constructor. It has a five-argument constructor to assign values to the name, artist, year, medium, and humanForm variables. It has a getter and setter for the humanForm variable. It has a toString() method. This class contains no other methods Make sure to include your name, the name of this class, our course number, and the Activity number in a Javadoc comment at the top. Make sure to write a Javadoc comment for each of these methods.arrow_forwardjavaarrow_forward
- C# question using inheritance: Write a program that creates a ‘shape calculator’. There must be: Shape, Circle, Rectangle, and Triangle classes. There should also be a Point class. Set up proper protection. You need to set up the inheritance. Each class must be in a separate file. Circle, Rectangle and Triangle must have methods that calculate area and perimeter. There should be at least one constructor that fills all the Point (and radius) attributes for Circle (1 Point), Rectangle (2 Points) and Triangle (3 Points). Overload the add operator to add areas of like objects (2 circles, 2 rectangles, 2 triangles) for each child class. If the circle or rectangle or triangle does not exist, an error should be thrown and caught and a message should be made to your output screen. A looping menu should be made to offer the user to create the shapes, get the area and perimeter and enter a point for the circle/rectangle/triangle. All shapes should have double attributes. Circle should have a…arrow_forwardTask 3: Properties (Assignment)You have to write a program for an estate agency. The program must manage renting of properties. Your solution must implement the concepts of encapsulation and inheritance.Information required on all the properties listed to be rented: Type of property (residential (R) or business (B)), name of the owner, contact number of owner, duration of the contract (in months).Residential: Type of property (Flat, Townhouse or House), number of bedrooms, number of bathrooms, number of garages, rent per month.Business: Size in square meters, insurance per month, rent per month.Two separate reports must be displayed for the two types of properties. The output for residential properties must be displayed as follows:Owner Contact number Months Type BedR BathR Rent(pm)Joe Bloom 0879678223 24 T 4 3 R19000The rent for residential properties depend on the type of property and the number of bedrooms.Flat – R8000pm + R 500pm per bedroomTownhouse – R…arrow_forwardNumber Guessing Program using java: The player has to guess a number given in between a range. If the guessed number is right, the player wins else, loses. It also has the concept of limited attempts where the player has to guess the number within the limited attempts given. Note: It must incorporates the following OOP components: - Classes - Objects - Constructors - Class Variable - Object Methodarrow_forward
- Animal Lab The objective of this assignment is to give you some practice using inheritance, virtual functions, and polymorphism. Instructions: Create a base class called Animal. All animals have a name (i.e. “Fido,” “Thumper,” “Princess,” “Nemo,” etc.) and an age. Provide a default constructor that initializes the age to zero and outputs the message “Invoking the default Animal constructor” and another constructor that allows the name and age to be set by the client. This other constructor should also output the message “Invoking the 2-argument Animal constructor.” Also construct a destructor for this class that outputs the message “Invoking the default Animal destructor.” Your Animal class should have a function called Move that cannot be implemented. That is, it should be declared as a purely virtual function. Your class should also have Get and Set methods to allow the name and age to be accessed. From the Animal class, derive Dog, Rabbit, Fish, and Snake classes. The derived…arrow_forwardClasses: Write a Person class that has these attributes: person_ID, first and last names, and age Default and overloaded constructors Accessors and mutators equals method toString method (make this virtual if C++, don't forget to prep the class for polymorphism) Inheritance: Create a child class to Person called Student: Attributes: GPA and status (freshman, sophomore, junior, senior, graduate, graduated). Make sure you have appropriate accessor/mutator methods Create another child class to represent Faculty. This class will have faculty rank and length of service as attributes along with an office location. Again, add methods as needed. Application Create an application that displays a menu that allows users to add students or faculty, or print either one or exit. Deliverable: Submit your source code and classes on Github (you will be supplied an account) You will also submit a Word document and your code on Canvas. In the document you iwll write a summary of your design…arrow_forward# Coding - Simulate a robot Write a program that simulates the movements of a robot. The robot can have three possible movements: turn right turn left advance The robot is placed on a hypothetical infinite grid, facing a particular direction (north, east, south, or west) at a set of `{x,y}` coordinates,e.g., `{3,8}`, with coordinates increasing to the north and east. Create a Class `Robot` that contains a method `execute` which given a number of instructions will calculate the robot's new position, and the the direction in which it is pointing. ## Example The letter-string "RAALAL" means: Turn right Advance twice Turn left Advance once Turn left yet again Say a robot starts at `{7, 3}` facing north. Running this stream of instructions should leave it at `{9, 4}` facing west. ## Inputs and Outputs The argument of the `execute` is `string` in the format `X Y BEARING COMMANDS`. The method should return a one-liner `string` in the format `X Y BEARING`. In the…arrow_forward
- Database System ConceptsComputer ScienceISBN:9780078022159Author:Abraham Silberschatz Professor, Henry F. Korth, S. SudarshanPublisher:McGraw-Hill EducationStarting Out with Python (4th Edition)Computer ScienceISBN:9780134444321Author:Tony GaddisPublisher:PEARSONDigital Fundamentals (11th Edition)Computer ScienceISBN:9780132737968Author:Thomas L. FloydPublisher:PEARSON
- C How to Program (8th Edition)Computer ScienceISBN:9780133976892Author:Paul J. Deitel, Harvey DeitelPublisher:PEARSONDatabase Systems: Design, Implementation, & Manag...Computer ScienceISBN:9781337627900Author:Carlos Coronel, Steven MorrisPublisher:Cengage LearningProgrammable Logic ControllersComputer ScienceISBN:9780073373843Author:Frank D. PetruzellaPublisher:McGraw-Hill Education