
If you're a programmer using C++, Smalltalk, or Eiffel, or if you're about to migrate to object orientation for the first time, you need to know the most important principles of object-oriented design. For In a reliable design, why must a variable's cone of polymorphism lie within that of a method. Is connascence good or bad? How could the inherited methods of a superclass violate the invariant of a subclass—and how can this be prevented? Page-Jones answers these questions and more, with characteristic clarity, demystifying the fundamentals of object orientation in a language-independent way. He provides a comprehensive notation for object-oriented design that allows you to depict the design for a whole system or to jot down back-of-the-envelope ideas. features 150+ diagrams and exercises Topics Include * Encapsulation * Information Hiding * State Retention * Object Identity * Synchronous and Asynchronous Messages * Classes and Subclasses * Inheritance * Polymorphism * Genericity * Reusability * The Object-Communication Diagram * States and Transitions * Connascence * Class Domains * Encumbrance * State Space and Behavior * Class Cohesion * Guide to Object-Oriented Terminology * Object-Orientation in a Historical Context From the Foreword ". . . vintage Page-Jones... Meilir is a gifted teacher... a relentlessly pragmatic focus based on real-world experience . . . compact examples to guide the developer, whether novice or old hand, toward better object-oriented software solutions... Who could ask for more?" — Larry L. Constantine