When designing a class hierarchy, you may face a decision between inheritance (aka IsA ) vs. containment (aka HasA) relation. For instance, if you are designing a
Radio
class, and you already have the following classes implemented for you in some library:
Dial, ElectricAppliance.
It is quite obvious that your Radio should be derived from
ElectricAppliance.
However, it is not so obvious that
Radio
should also be derived from
Dial
. How to decide? You can check whether there is always a 1:1 relation between the two, e.g., do all radios have one and only one dial? You may realize that the answer is