Identifying inheritance

If you are lucky, you will be able to directly identify concepts in your requirements which fall into a natural inheritance hierarchy. Requirements which mention phrases like "X is a Y" / "X is a kind of Y" / "X is a type of Y" are likely candidates for inheritance.

Often, though, you may only discover an inheritance hierarchy during implementation, and you should refactor accordingly. Tell-tale signs include:

It is often a good idea to look out for refactoring opportunities during implementation to take advantage of appropriate object-oriented design techniques.