Reuse Techniques
Implementation inheritance:
   Reuse of code by subclassing an existing class and
modifying its behavior.
Specification inheritance:
   Subclasses are subtypes of their superclass.  Objects of
the subclass can be substituted for any object of the
superclass type.
Delegation:
   Implementation of an operation by sending a message to
another class.
*