This book develops a theory of objects as a foundation for object- oriented languages and programming. It shows how object-oriented notions may be expressed in terms of a few basic primitives, and how these can be used to design and understand object-oriented programming languages.