(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
EBK C HOW TO PROGRAM
- 1. (Account Inheritance Hierarchy) Create an inheritance hierarchy that a bank might use to represent customer bank accounts. All customers at this bank can deposit money into their accounts and withdraw 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, don't earn interest and charge a fee per transaction. Start with class Account from this chapter and create two subclasses SavingsAccount and CheckingAccount. A Savings Account should also include a data attribute indicating the interest rate. A Savings Account's calculate_interest method should return the Decimal result of multiplying the interest rate by the account balance. SavingsAccount should inherit methods deposit and withdraw without redefining them. A CheckingAccount should include a Decimal data attribute that represents the fee charged per transaction. Class CheckingAccount should override methods…arrow_forwardJava Assignment Outcomes: Student will demonstrate the ability to utilize inheritance in a Java program. Student will demonstrate the ability to apply the IS A and HAS A relationships. Program Specifications: Start by watching Video Segment 16 from Dr. Colin Archibald's video series (found in the module overview). Key in the program shown in the video and make sure it works. Then, add the following: Animals have a Weight. Animals have a Height. Dog is an Animal. Dogs have a Name. Dogs have a Breed. Dogs have a DOB. Cat is an Animal Cats have a Name. Cats have 9 lives, so you need to keep track of the remaining lives once a cat dies. Bird is an Animal Birds have a wing span Birds have a canFly which is true or false (some birds cannot fly) Create a test class that creates one of each type of animal and displays the animal’s toString method. Submission Requirements: You must follow the rules from the prior assignments. UMLs and Design Tools are not required for this one. YOU MAY…arrow_forward(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_forward
- (Quadrilateral Inheritance Hierarchy) Draw an inheritance hierarchy for classes Quadrilateral, Trapezoid, Parallelogram, Rectangle and Square. Use Quadrilateral as the base class ofthe hierarchy. Make the hierarchy as deep as possible.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_forwardArtwork label (classes/constructors) PYTHON ONLY Define the Artist class with a constructor to initialize an artist's information and a print_info() method. The constructor should by default initialize the artist's name to "None" and the years of birth and death to 0. print_info() should display Artist Name, born XXXX if the year of death is -1 or Artist Name (XXXX-YYYY) otherwise. Define the Artwork class with a constructor to initialize an artwork's information and a print_info() method. The constructor should by default initialize the title to "None", the year created to 0, and the artist to use the Artist default constructor parameter values. Ex: If the input is: Pablo Picasso18811973Three Musicians1921 the output is: Artist: Pablo Picasso (1881-1973)Title: Three Musicians, 1921 If the input is: Brice Marden1938-1Distant Muses 2000 the output is: Artist: Brice Marden, born 1938Title: Distant Muses, 2000arrow_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(Package Inheritance Hierarchy) Package-delivery services, such as FedEx® ,DHL®and UPS® ,offer a number of different shipping options, each with specific costsassociated. Create an inheritance hierarchy to represent various types of packages. Useclass Package as the base class of the hierarchy, then include classes TwoDayPackageand OvernightPackage that derive from Package.Base class Package should include data members representing the name, address, city,state and ZIPcode for both these sender and the recipient of the package, in addition todata members that store the weight (in ounces)and cost per ounce to ship the package.Package’s constructor should initialize these data members. Ensure that the weight andcost per ounce contain positive values. Package should provide a public memberfunction calculate Cost that returns a double indicating the cost associated with shippingthe package. Package’s calculate Cost function should determine the cost bymultiplying the weight by the cost per…arrow_forward(Package Inheritance Hierarchy) Package-delivery services, such as FedEx® ,DHL®and UPS® ,offer a number of different shipping options, each with specific costsassociated. Create an inheritance hierarchy to represent various types of packages. Useclass Package as the base class of the hierarchy, then include classes TwoDayPackageand OvernightPackage that derive from Package.Base class Package should include data members representing the name, address, city,state and ZIPcode for both these sender and the recipient of the package, in addition todata members that store the weight (in ounces)and cost per ounce to ship the package.Package’s constructor should initialize these data members. Ensure that the weight andcost per ounce contain positive values. Package should provide a public memberfunction calculate Cost that returns a double indicating the cost associated with shippingthe package. Package’s calculate Cost function should determine the cost bymultiplying the weight by the cost per…arrow_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_forward(Triangle class) Design a new Triangle class that extends the abstract GeometricObject class. Draw the UML diagram for the classes Triangle and GeometricObject and then implement the Triangle class. Write a test program that prompts the user to enter three sides of the triangle, a colour, and a Boolean value to indicate whether the triangle is filled. The program should create a Triangle object with these sides and set the colour and filled properties using the input. The program should display the area, perimeter, colour, and true or false to indicate whether it is filled or not.arrow_forwardUse JAVA - This task helps you understand how constructors work in inheritance Create a superclass, called SuperClass. Create a constructor for it. Inside the constructor, let it print “this is super class.” Create a childclass of SuperClass, called ChildClass. Create a constructor for it. Inside the constructor, let it print “this is child class.” Create a main function and create a new object for ChildClass. Observe what’s printed in console. What will happen if you have a default constructor without parameters in addition to the one with parameters?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