Object-oriented programming is based on the priciple of recursive design.
- Everything is an object
 
- Objects perform computation by making requests of each other through the passing of messages
 
- Every object has it's own memory, which consists of other objects.
 
- Every object is an instance of a class.  A class groups similar objects.
 
- The class is the repository for behavior associated with an object
 
- Classes are organized into singly-rooted tree structure, called an inheritance hierarchy.
We can illustrate these principles by considering how I go about solving
a problem in real life.