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. Both provocative and pragmatic, this book gives form to what’s primarily been an oral tradition among the field’s revolutionary thinkers—and it illustrates specific object-behavior practices that you can adopt for true object design and superior results.
Gain an in-depth understanding of:
Prerequisites and principles of object thinking.
Object knowledge implicit in eXtreme Programming (XP) and Agile software development.
Object conceptualization and modeling.
Metaphors, vocabulary, and design for object development.
Learn viable techniques for:
Decomposing complex domains in terms of objects.
Identifying object relationships, interactions, and constraints.
Relating object behavior to internal structure and implementation design.
Incorporating object thinking into XP and Agile practice.
Table of Contents
- Object Thinking
1. Object Thinking
- Observing the Object Difference
- Object Thinking = Think Like an Object
- Problem = Solution
- Object Thinking and Agile Development Practices
- Thinking Is Key
- 2. Philosophical Context
3. From Philosophy to Culture
- Four Presuppositions
- Object Principles—Software Principles
- Cooperating Cultures
- 4. Metaphor: Bridge to the Unfamiliar
5. Vocabulary: Words to Think With
- Essential Terms
- Extension Terms
- Implementation Terms
- Auxiliary Concepts
- 6. Method, Process, and Models
- Domain Understanding
- Heuristic: Let objects assume responsibility for tasks that are wholly or completely delegated to other objects in cases in which the responsibility reflects natural communication patterns in the domain.
- Heuristic: Delegate responsibilities to get a better distribution and increase reusability.
- Heuristic: Use anthropomorphization and foreshadowing to determine whether an object should assume a given responsibility.
- Heuristic: Responsibilities should be distributed among the community of objects in a balanced manner.
- Heuristic: Always state responsibilities in an active voice describing a service to be performed.
- Heuristic: Avoid responsibilities that are characteristic specific, that focus on providing a potential user with the value of a single characteristic of the object.
- Heuristic: Create proxies for objects outside your domain that are sources of information required by objects within your domain.
- Heuristic: Look for components.
- 8. Thinking Toward Design
9. All the World’s a Stage
- Static Relationships
- Dynamic Relationships
- Development at the Speed of Thought
- 10. Wrapping Up
- About the Author
- About the Author
- Title: Object Thinking
- Release date: February 2004
- Publisher(s): Microsoft Press
- ISBN: 0735619654