Cover
Copyright
Table of Contents
Preface
A Different (and Possibly Controversial) Kind of Software Book
Paths and Destinations
Who Should Read This Book
How This Book Is Organized
Introduction
Curiosities
The "People Issue"
The Need for Better Developers
Producing Better Developers
Object Thinking
XP and Object Thinking
1: Object Thinking
Observing the Object Difference
Object Thinking = Think Like an Object
Problem = Solution
Object Thinking and Agile Development Practices
Values
Selected Practices
Thinking Is Key
Software Development Is a Cultural Activity
Onward
2: Philosophical Context
Philosophy Made Manifest—Dueling Languages
SIMULA
C++
Smalltalk
Formalism and Hermeneutics
Postmodern Critiques
3: From Philosophy to Culture
Four Presuppositions
One: Everything is an object.
Two: Simulation of a problem domain drives object discovery and definition.
Three: Objects must be composable.
Four: Distributed cooperation and communication must replace hierarchical centralized control as an organizational paradigm.
Object Principles—Software Principles
Cooperating Cultures
4: Metaphor: Bridge to the Unfamiliar
The Lego Brick Metaphor
The Object-as-Person Metaphor
Software as Theater; Programmers as Directors
Ants, Not Autocrats
Two Human-Derived Metaphors
Inheritance
Responsibility
Thinking Like an Object
5: Vocabulary: Words to Think With
Essential Terms
Object
Responsibility
Message
Interface (Protocol)
Extension Terms
Collaboration and Collaborator
Class
Class Hierarchy (Library)
Abstract/Concrete
Inheritance
Delegation
Polymorphism
Encapsulation
Component
Framework
Pattern
Implementation Terms
Method
Variable
Late/Dynamic Binding
Auxiliary Concepts
Domain
Business Requirement
Business Process Reengineering
Application
6: Method, Process, and Models
Two Decades of Object Methodology
Purpose and Use of Method
A Syncretic Approach
Models
Semantic Net
Object Cubes
Interaction Diagram
Static Relation Diagram
Object State Chart
7: Discovery
Domain Understanding
Domain Anthropology
Object Definition
Heuristics
8: Thinking Toward Design
Object Internals
Knowledge Required
Message Protocol
Message Contracts
State Change Notification
Object Appearance
Occasions Requiring an Appearance
Object State, Object Constraints
9: All the World's a Stage
Static Relationships
Is-a-Kind-of Relationship
Collaborates-with Relationship
Situational Relationship
Dynamic Relationships
Scripts
Event Dispatching
Constraints
Self-Evaluating Rules
Implementation
Methods
Knowledge Maintenance Objects
Development at the Speed of Thought
10: Wrapping Up
Vexations
The Impedance Mismatch Problem
A Problem with GUIs
Extensions
Frameworks
Object-Based Evocative Architecture
Provocation—The Future of Objects
Bibliography
Index
A
B, C
D
E, F
G, H
I, J, K, L, M
N, O
P
Q, R
S
T, U, V
W, X, Y
About the Author