What is included with this book?
Preface | |
Acknowledgments | |
The Motivation for Object-Oriented Programming | |
Revolutionists, Evolutionists, and the Object-Oriented Paradigm | |
Accidental Versus Essential Complexity á la Frederick Brooks | |
The Waterfall Model | |
The Iterative Model | |
Same- Versus Different-Language Prototyping | |
Software Reusability | |
Corporate Hierarchies of Good Designers | |
Classes and Objects: The Building Blocks of the Object-Oriented Paradigm | |
Introduction to Classes and Object | |
Messages and Methods | |
Class Coupling and Cohesion | |
Dynamic Semantics | |
Abstract Classes | |
Roles Versus Classes | |
Topologies of Action-Oriented Versus Object-Oriented Applications | |
Differences in Application Topologies | |
When the Action-Oriented Paradigm Goes Right | |
The God Class Problem (Behavioral Form) | |
Another Example of Poor System Intelligence Distribution | |
The God Class Problem (Data Form) | |
The Proliferation of Classes Problem | |
The Role of Agent Classes | |
Examining the Use of Separate Entity and Controller Classes | |
The Relationships Between Classes and Objects | |
Introduction to Class and Object Relationships | |
The Uses Relationship | |
Six Different Ways to Implement the Uses Relationship | |
Heuristics for the Uses Relationship | |
Refining the Amount of Collaboration Between Two Classes | |
The Containment Relationship | |
Semantic Constraints Between Classes | |
Attributes Versus Contained Classes | |
More Containment Heuristics | |
A Relationship Between Uses and Containment? | |
Containment by Value Versus | |
Containment by Reference | |
The Inheritance Relationship | |
Introduction to the Inheritance Relationship | |
Overriding Base Class Methods in Derived Classes | |
The Use of the Protected Section of a Base Class | |
The Width and Depth of Inheritance Hierarchies | |
Private, Protected, and Public Inheritance á la C++ | |
A Real-World Example of Specialization | |
Heuristics That Trade Off Design Complexity and Flexibility | |
A Real-World Example of Generalization | |
The Mechanism of Polymorphism | |
A Problem with the Use of Inheritance as a Reusability Mechanism | |
An Inheritance Solution to an Interrupt-Driven Architecture | |
Inheritance Hierarchies Versus Attributes | |
The Confusion of the Need for Inheritance Versus an Object's Dynamic Semantics | |
Using Inheritance to Hide the Representation of a Class | |
Mistaking Objects for Derived Classes | |
Mistaking Object Generalization for the Need to Build Classes at Runtime | |
The Attempt to NOP a Base Class Method in Its DerivedClass(es) | |
The Implementation of Optional Parts of Objects | |
A Problem with No Optimal Solution | |
Reusing Components Versus Reusing Frameworks | |
Multiple Inheritance | |
Introduction to Multiple Inheritance | |
The Common Misuse of Multiple Inheritance | |
A Valid Use of Multiple Inheritance | |
Accidental Complexity In Languages That Do Not Support Multiple Inheritance | |
Frameworks That Incorporate Multiple Inheritance | |
The Use of Multiple Inheritance in the Design of Mixins | |
DAG Multiple Inheritance | |
Accidental DAG Multiple Inheritance via Poor Implementation of Optional Containment | |
The Association Relationship | |
Introdu | |
Table of Contents provided by Publisher. All Rights Reserved. |
The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.
The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.