Consider going down to the local coffee shop, BeanMeUp, for a coffee. There are typically many different drinks on offer – espressos, lattes, teas, iced coffees, hot chocolate to name a few, as well as a number of extras (which cost extra too) such as whipped cream or an extra shot of espresso. You can also make certain changes to your drink at no extra cost, such as asking for decaf coffee instead of regular coffee.
Quite clearly if we are going to model all these drinks and combinations, there will be sizeable class diagrams. So for clarity we will only consider a subset of the coffees: Espresso, Espresso Con Panna, Café Late, Cappuccino and Café Mocha. We’ll include 2 extras - whipped cream (“whipped”) and an extra shot of espresso; and three changes - decaf, steamed milk (“wet”) and foamed milk (“dry”).