Lecture Notes on Object-Oriented Programming

The Quality of Classes and OO Design

This collection of notes on OOP was never meant to stand alone. It also represents a view of OO circa early to mid 1990s. Some people still find them useful, so here they are, caveat emptor. Special thanks to Gilbert Benabou for taking to time to compile the first printable version of this document and inspiring us to provide it.
[PDF]
Printable Version

The terminology of OO is still evolving; each book and language has a slightly different set of terms. Start a terminology cheat sheet. I'll let you know what should be on it as we go.

The object model has many facets. Here are the ones you'll eventually have to understand to be mature OO developers. Note that these aren't "OO" concepts. There is however a way of thinking about and understanding them in an OO context.

  • Abstraction, Encapsulation, Identity, Modularity, Hierarchy, Typing, Concurrency, Persistence

This is initially a scary, rather monstrous task. We'll take them iteratively, in keeping with our OO development methodology.