Interfaces vs. Subclassing¶
Goal¶
Use an interface instead of a base class.
Step 1: Change CoffeeItem to an Interface¶
-
Change
CoffeeItemso that instead ofpublic class CoffeeItem, you havepublic interface CoffeeItem. -
Try and compile/run your app and see the error messages that are displayed.
Step 2: Make Subclasses Implement the Interface¶
-
Go through all of the coffee items (size, creamer, sweetener), replacing
extends CoffeeItemwithimplements CoffeeItem. -
Run all the tests. Do they all pass?
Step 3: Add Quantity to Creamer and Sweetener¶
In this step, we want the ability to have multiple creamers and sweeteners in our coffee.
-
In both the
CreamerandSweetenerclasses, add a member variableint quantityand have it default to 1. -
Create overloaded constructors that accept the quantity amount in addition to the type of Creamer/Sweetener. For example:
public Creamer(String creamerType, int quantity) -
Update the
price()methods in both Creamer/Sweetener that multiply the price by the quantity. -
Write a few tests that specify a quantity other than 1 (try 2 or 3) and make sure that they calculate the price correctly.
Once you've completed the above steps, check in with the instructor to review your code.
Once you've completed the above steps, check in with the instructor to review your code.