I said at the beginning of the first chapter that OOP was both revolutionary and evolutionary. In the first chapter we explored some of the revolutionary aspects. In this section let us explore the evoluationary part. We will do this by examining a short history of the development of abstraction mechanisms for programming languages, and see how object-oriented fits into the picture. Seen in this light, object-oriented programming is a natural outgrowth of the ideas that preceded it.