Chapter 5 - Object-Oriented Design

Object-oriented software construction is to build a set of interacting ADTs partially or fully implemented.

Inheritance and polymorphism are also essential features.