You are designing an application that will help keep track of sales for your company. This sales data may be shared with potential clients. There are three types of accounts that track sales for your company: supplies, services, and paper.
All sales accounts will have an account id. You will need attributes to keep track of the number of hours and rate per hour of services provided. You will need attributes to keep track of the number of pounds of paper sold and the price per pound. You should also keep track of the total sold in supplies. In addition to the following required attributes for supplies, services and paper account classes, feel free to include additional attributes that you think are appropriate.
Your management wants the application to be easy to maintain and to promote code reuse as much as possible. You propose that this can be best achieved by utilizing object-oriented design principles and you want to incorporate an inheritance hierarchy with the account types. The first step of your design process is to design and present to the team an Account inheritance hierarchy.
Create a class diagram for the Account inheritance hierarchy. Your subclasses should be Supplies, Services, and Paper.
Explain your class diagram and answer the following:
- How does this inheritance hierarchy promote code reuse?
- How does this inheritance hierarchy make the application easier to maintain?
- If in the future, if another type of account is needed, what are the steps for adding this new account type to your design?