IsA or HasA?

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

Share the Post:
Share on facebook
Share on twitter
Share on linkedin

Overview

Recent Articles: