Lecture Notes on Object-Oriented Programming

The Object Model

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

Table of Contents
  1. Introduction: Motivation for OO
  2. The OO Paradigm
  3. Visualizing Program Execution
  4. Naming Conventions
  5. The Object Model
  6. Abstraction and Identity
  7. Messaging
  8. Encapsulation & Modularity
  9. Hierarchy
  10. Object-Oriented Typing
  11. OO Concurrency & Persistence
  12. OO Development Process
  13. OO Analysis Techniques
  14. Pitfalls in OO Analysis
  15. UML Notation
  16. CRC Cards
  17. OO Class Relationships
  18. Object Oriented Aggregation
  19. Object Oriented Interitance
  20. Other Object Oriented Class Relationships
  21. Object Oriented Instantiation
  22. Object Oriented Polymorphism
  23. Review of OO Programming
  24. The Quality of Classes and OO Design

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.