Arguably the most important theoretical work in the field of
Object-Oriented programming, written by
Bertrand Meyer and later on revised with a second edition, this is one of the few tomes on the subject that explains in laymen terms, what real problems in the world of programming exist that
Object-Oriented programming comes to solve and how it goes about solving it.
As the book progresses, the content shifts from the abstract to the practical. The second edition uses Eiffel, Bertrand Meyer's self-devised programming language to show how these programming principles can be implemented.
ISBN of the 2nd edition: 0136291554