## BJP5 Exercise 9.10: DiscountBill

Author: Robert Baxter (on 2019/09/19)

Suppose a class `GroceryBill` keeps track of a list of items being purchased at a market:

Method/Constructor Description
`public GroceryBill(Employee clerk)` constructs a `GroceryBill` object for the given `clerk`
`public void add(Item i)` adds `i` to this bill's total
`public double getTotal()` returns the cost of these items
`public void printReceipt()` prints a list of items

`GroceryBill` objects interact with `Item` objects. An `Item` has the following public methods:

Method/Constructor Description
`public double getPrice()` returns the price for this item
`public double getDiscount()` returns the discount for this item

For example, a candy bar item might cost `1.35` with a discount of `0.25` for preferred customers, meaning that preferred customers get it for `1.10`. (Some items will have no discount, `0.0`.) Currently the above classes do not consider discounts. Every item in a bill is charged full price, and item discounts are ignored.

Define a class `DiscountBill` that extends `GroceryBill` to compute discounts for preferred customers. The constructor for `DiscountBill` accepts a parameter for whether the customer should get the discount.

Your class should adjust the amount reported by `getTotal` for preferred customers. For example, if the total would have been `\$80` but a preferred customer is getting `\$20` in discounts, then `getTotal` should report the total as `\$60` for that customer. You should also keep track of how many items a customer is getting a non-zero discount for and the overall discount, both as a total amount and as a percentage of the original bill. Include the extra methods below that allow a client to ask about the discount:

Method/Constructor Description
`public DiscountBill(Employee clerk, boolean preferred)` constructs discount bill for given `clerk`
`public int getDiscountCount()` returns the number of items that were discounted, if any
`public double getDiscountAmount()` returns the total discount for this list of items, if any
`public double getDiscountPercent()` returns the percent of the total discount as a percent of what the total would have been otherwise

If the customer is not a preferred customer the `DiscountBill` behaves at all times as if there is a total discount of 0.0 and no items have been discounted.

This is an inheritance problem. Write a Java class using inheritance. (You do not need to write any `import` statements.)