Many object-oriented languages used in practice descend from Algol.
With this motivation, we study the theoretical issues underlying such
languages via the theory of Algol-like languages. It is shown that
the basic framework of this theory extends cleanly and elegantly to
the concepts of objects and classes. An important idea that comes to
light is that classes are abstract data types, whose theory
corresponds to that of existential types. Equational and Hoare-like
reasoning methods, and relational parametricity provide powerful
formal tools for reasoning about Algol-like object-oriented programs.