In OBJECT THINKING, esteemed object technologist David West contends that the mindset makes the programmer—not the tools and techniques. Delving into the history, philosophy, and even politics of object-oriented programming, West reveals how the best programmers rely on analysis and conceptualization—on thinking—rather than formal process and methods.
The real value of the object idea was in the area of design, not programming.
This book focuses on the identification and design of objects and the use of those objects to create the “radically different solutions and architectures” promised by Grady Booch in his 1991 book Object Oriented Analysis — the first widely read book on object-oriented development.
Objects were supposed to be identified and designed around their behavior (not the animated data entities that came to dominate OO programming) and this book shows why and how to create robust behavioral objects. The primary advantages of this approach are simplicity, compose-ability, and adaptability.
PDF downloads — text only, not the figures — of each chapter are available.
The need for better developers; better developers; object thinking; a different (and possibly controversial) kind of software book; intended audience; and, about the author.
Chapter One: Object Thinking
Observing the object difference; object thinking = think like an object; object thinking and XP (extreme programming); software development is a cultural activity; and onwards.
Chapter Two: Philosophical Context
Philosophy made manifest — dueling languages; Simula; C++; Smalltalk; formalism and hermeneutics; and, postmodern critiques.
Chapter Three: From Philosophy to Culture
Four presuppositions: 1) everything is an object, 2) decomposition based on behavior as differentiation criterion, 3) objects must be composable, 4) hierarchical control must be replaced with coordination and cooperation; object principles, software principles; and cooperating cultures.
Chapter Four: Metaphor—Bridge to the Unfamiliar
The LEGO Block metaphor; (sidebar: how many objects); object as person metaphor; software as theater, programmers as directors; ants, not autocrats; inheritance and responsibility; and thinking like an object.
Chapter Five: Vocabulary, Words to Think With
Essential terms (object, responsibility, message, protocol); supporting terms (class, class hierarchy/library, abstract/concrete, inheritance, delegation, polymorphism, encapsulation, component, framework, pattern); implementation terms (method, variable, late/dynamic binding); and, auxiliary concepts (domain, business requirement, business process reengineering, application)
Chapter Six: Method Process and Models
Two decades of object methodology; purpose and use of method; a syncretic approach; and models (semantic net, object cube, interaction diagram, static relation diagram, object state chart).
Chapter Seven: Discovery
Domain understanding; domain anthropology; object definition; heuristics; contracts and collaboration graphs; and class hierarchy integration.
Chapter Eight: Completion
Object structure (knowledge required); object structure (draft protocol); object structure (event notification); interface prototypes and state models; and modeling object constraints.
Chapter Nine: All the World’s a Stage
(sidebar: systems and artifacts); static relationships; collaborates-with; situational relationships; collective memory map; architecture; dynamic relationships; scripts; event dispatching; constraints; self-evaluating rules; implementation; testing, and knowledge maintenance objects.