Preface From Object Orientation to Patterns to True Object Orientation From Artificial Intelligence to Patterns to True Object Orientation A Note About Conventions Used in This Book Feedback Acknowledgments PART 1 An Introduction to Object-Oriented Ware Development Chaptor, The Object-Oriented Paradigm Overview Before The Object-Oriented Paradigm: Functional Decomposition The Problem of Requirements Dealing with Changes: Using Functional Decomposition Dealing with Changing Requirements The Object-Oriented Paradigm Object-Oriented Programming in Action Special Object Methods Summary Chapter 2 The UML-The Unfifed Modeling Language Overview What Is the UML? Why Use the UML? The Class Diagram Interaction Diagrams Summary PART ll The Limitations of Traditional Object-Oriented Design Chapter 3 A ProbIem That Cries Out for FIexible Code Overview Extracting Information from a CAD/CAM System Understand the Vocabulary Describe the Problem The Essential Challenges and Approaches Summary Chapter 4 A Standard Object-Oriented SoIution Overview Solving with Special Cases Summary Supplement: C++ Code Examples PART Ill Design Patterns Chapter 5 An lntroduction to Design Patterns Overview Design Patterns Arose from Architecture and Anthropology Moving from Architectural to Software Design Patterns. Why Study Design Patterns? Other Advantages to Studying Design Patterns Summary Chapter 6 The Facade Pattern Overview Introducing the Facade Pattern Learning the Facade Pattern Field Notes: The Facade Pattern Relating the Facade Pattern to the CAD/CAM Problem Summary Chapter 7 The Adapter Pattern Overview Introducing the Adapter Pattern Learning the Adapter Pattern Field Notes: The Adapter Pattern Relating the Adapter Pattern to the CAD/CAM Problem Summary Supplement: C++ Code Example Chapter 8 Expanding Our Horizons Overview Objects: the Traditional View and the New View Encapsulation: the Traditional View and the New View Find What Is Varying and Encapsulate It Commonality/Variability and Abstract Classes Summary Chapter 9 The Brldge Pattern Overview Introducing the Bridge Pattern Learning the Bridge Pattern: An Example An Observation About Using Design Patterns Learning the Bridge Pattern: Deriving It The Bridge Pattern in Retrospect Field Notes: Using the Bridge Pattern Summary Supplement: C++ Code Examples Chaptor 1O The Abstract Factory Pattern Overview Introducing the Abstract Factory Pattern Learning the Abstract Factory Pattern: An Example Learning the Abstract Factory Pattern: Implementing It Field Notes: The Abstract Factory Pattern Relating the Abstract Factory Pattern to the CAD/CAM Problem Summary Supplement: C++ Code Examples PART IV Putting lt AIl Togrther: Thinking In Pattrrns Chaptrr 11 How Do Expetrts Design? Overview Building by Adding Distinctions Summary Chaptrr 12 Solving the CAD/CAM Problem wlth Pattrrns_197 Overview Review of the CAD/CAM Problem Thinking in Patterns Thinking in Patterns: Step 1 Thinking in Patterns: Step 2a Thinking in Patterns: Step 2b Thinking in Patterns: Step 2c Thinking in Patterns: Step 2d (Facade) Thinking in Patterns: Step 2d (Adapter) Thinking in Patterns: Step 2d (Abstract Factory) Thinking in Patterns: Step 3 Comparison with the Previous Solution Summary Chapter 13 The Principles and Strategies of Design Patterns Overview The Open-Closed Principle The Principle of Designing from Context The Principle of Containing Variation Summary PART V Handling Variations with Design Patterns Chapter 14 The Strategy Pattern Overview An Approach to HandIing New Requirements Initial Requirements of the Casc Study Handling New Requirements, The Strategy Pattern Field Notes: Using the Strategy Pattern Summary Chapter 15 The Decorator Pattern Overview A Little More Detail The Decorator Pattern Applying the Decorator Pattern to the Case Study Another Example: Input/Output Field Notes: Using the Decorator Pattern Summary SuppIement: C++ Code Examples Ohapter 16 The Singleton Pattern and the Double-Checked Locking Pattern Overview Introducing the Singleton Pattern Applying the Singleton Pattern to the Case Study A Variant: The Double-Checked Locking Pattern Field Notes: Using the Singleton and Double-Checked Locking Patterns Summary Supplement: C++ Code Examples Ohapter 17 The Observer Pattern Overview Categories of Patterns More Requirements for the Case Study The Observer Pattern Applying the Observer to the Case Study Field Notes: Using the Observer Pattern Summary Supplement: C++ Code Example chapter 18 The TempIate Method Pattern Overview More Requirements for the Case Study. The Template Method Pattern Applying the Template Method to the Case Study Field Notes: Using the Template Method Pattern Summary Chapter 19 The Factory Method Pattern Overview More Requirements for the Case Study The Factory Method Pattern Field Notes: Using the Factory Method Pattern Summary Chapter 2O The Analysis Matrix Overview In the ReaI World: Variations Case Study in Variation: An International E-Tail System Field Notes Summary PART Vl Endings and Beginnings chapter 21 Oesign Patterns Reviewed from the New Perspective of Object-Orlented Design Overview A Summary of Object-Oriented Principles How Design Patterns Encapsulate Implementations Commonality/Variability Analysis and Design Patterns Decomposing a Problem Domain into Responsibilities Relationships Within a Pattern Patterns and Contextual Design Field Notes Summary Chapter 22 BibIiography Design Patterns Explained: The Web Site Companion Recommended Reading on Design Patterns and Object orientation Recommended Reading for Java Programmers Recommended Reading for C++ Programmers Recommended Reading for COBOL Programmers Recommended Reading on eXtreme Programming Recommended Reading on General Programming Personal Favorites INDEX