Object design : roles, responsibilities, and collaborations /
Основен автор: | Wirfs-Brock, Rebecca. |
---|---|
Други автори: | McKean, Alan. |
Формат: | Книга |
Език: | English |
Публикувано: |
Boston [Mass.] ; London :
Addison-Wesley,
c2003.
|
Предмети: | |
Подобни документи: |
Online version::
Object design. Online version:: Object design. |
Съдържание:
- Chapter 1
- Design Concepts
- 1
- Object Machinery
- 2
- Roles
- 3
- Object Role Stereotypes
- 4
- Roles, Responsibilities, and Collaborations
- 5
- Object Contracts
- 7
- Conditions-of-Use and Aftereffect Guarantees
- 8
- Domain Objects
- 8
- Application-Specific Objects
- 10
- Interfaces
- 12
- Classes
- 13
- Two Roles
- 13
- Composition
- 16
- Inheritance
- 16
- Object Organizations
- 17
- Components
- 18
- Patterns
- 18
- Applying Double Dispatch to a Specific Problem
- 20
- The Real Benefits of Using Patterns
- 25
- Frameworks, Inc.
- 25
- Architecture
- 27
- Architectural Styles
- 28
- Centralized Control Style
- 30
- Dispersed Control: No Centers
- 30
- Delegated Control
- 31
- Examining Interactions: A Layered Architecture Example
- 32
- Locating Objects in Layers
- 34
- Design Description
- 36
- Chapter 2
- Responsibility-Driven Design
- 39
- A Process for Seeing, Describing, and Designing
- 40
- Launching the Production: Project Definition and Planning
- 44
- Setting the Stage: Early Description
- 44
- Staging the Production: Design
- 47
- "Seeing" from Multiple Perspectives
- 49
- Writing the Script: Analysis Descriptions
- 49
- Usage Descriptions
- 50
- Other Specifications
- 58
- Glossaries
- 58
- Conceptual Objects
- 58
- Casting the Characters: Exploratory Design
- 60
- CRC Cards
- 61
- Inventions: Using Patterns
- 62
- Pursuing a Solution
- 67
- Bouncing Between Ideas and Details
- 68
- Tuning the Production: Design Refinement
- 70
- Designing for Flexibility and Extension
- 71
- Designing for Reliability
- 73
- Making Our Design Predictable, Consistent, and Comprehensible
- 73
- Chapter 3
- Finding Objects
- 77
- A Discovery Strategy
- 78
- Looking for Objects and Roles, and Then Classes
- 79
- Why Tell a Design Story?
- 80
- Search Strategies
- 84
- What's in a Name?
- 88
- Describing Candidates
- 93
- Characterizing Candidates
- 98
- Connecting Candidates
- 99
- Looking for Common Ground
- 101
- Defend Candidates and Look for Others
- 104
- Chapter 4
- Responsibilities
- 109
- What Are Responsibilities?
- 110
- Where Do Responsibilities Come From?
- 111
- Strategies for Assigning Responsibilities
- 125
- Recording Responsibilities
- 126
- Making Initial Assignments
- 128
- Getting Unstuck
- 138
- Implementing Objects and Responsibilities
- 140
- Testing Your Candidates' Quality
- 145
- Chapter 5
- Collaborations
- 149
- What Is Object Collaboration?
- 150
- Preparing for Collaboration
- 150
- Recording Candidate Collaborations
- 151
- The Design Story for the Speak for Me Software
- 152
- Collaboration Options
- 153
- Who's In Control?
- 155
- How Much Should Objects Trust One Another?
- 155
- Strategies for Identifying Collaborations
- 158
- Looking at an Individual Object's Role: Stereotypes Imply Collaborations
- 159
- Looking at Individual Responsibilities: They Imply Collaborations
- 166
- Designing the Details of a Complex Responsibility
- 168
- Designing Collaborations for a Specific Task
- 169
- Identifying Applicable Patterns
- 170
- Identifying How Architecture Influences Collaborations
- 172
- Solving Problems in Collaborations
- 173
- Simulating Collaborations
- 176
- Planning a Simulation
- 177
- Running a Simulation
- 180
- Designing Good Collaborations
- 183
- The Law of Demeter: A Case Study
- 184
- Making Collaborations Possible
- 187
- Guidelines for Making Connections
- 188
- Designing Reliable Collaborations
- 190
- When Are We Finished?
- 191
- Chapter 6
- Control Style
- 195
- What Is Control Style?
- 196
- Control Style Options
- 197
- Making Trade-offs
- 198
- Centralizing Control
- 198
- Delegating Control
- 200
- The Limits of Control Decisions
- 201
- Developing Control Centers
- 205
- A Case Study: Control Style for External User Events
- 206
- Centralizing Control in the MessageBuilder
- 208
- Refactoring Decision Making into State Methods within the MessageBuilder
- 220
- Abstracting Away Decisions
- 221
- Delegating More Responsibility
- 224
- Designing the Control Style for the Guessing Neighborhood
- 225
- Designing a Similar Control Center: Can We Be Consistent?
- 230
- Chapter 7
- Describing Collaborations
- 239
- Telling Collaboration Stories
- 240
- A Strategy for Developing a Collaboration Story
- 241
- Establishing Scope, Depth, and Tone
- 242
- Listing What You Will Cover
- 243
- Deciding on the Level of Detail
- 243
- Showing a Bird's-Eye View
- 244
- Showing Collaborators Only
- 245
- Showing a Sequence of Interactions Among Collaborators
- 250
- Showing an In-Depth View
- 251
- Showing a Focused Interaction
- 253
- Showing an Implementation View
- 254
- Showing How to Adapt a Collaboration
- 254
- Where UML Diagrams Fall Short
- 258
- Choosing the Appropriate Form
- 263
- Tell It, Draw It, Describe It: Guidelines
- 264
- Organizing Your Work
- 270
- Adding Emphasis
- 271
- Unfolding Your Story
- 271
- Understanding What's Fundamental
- 272
- Putting It All Together
- 273
- Preserving Stories
- 274
- Chapter 8
- Reliable Collaborations
- 277
- Understanding the Consequences of Failure
- 278
- Increasing Your System's Reliability
- 280
- Determining Where Collaborations Can Be Trusted
- 280
- Trusted Versus Untrusted Collaborations
- 281
- Implications of Trust
- 284
- Identifying Collaborations to Be Made Reliable
- 285
- What Use Cases Tell Us
- 286
- Distinguish Between Exceptions and Errors
- 287
- Object Exceptions Versus Use Case Exceptions
- 288
- Object Exception Basics
- 288
- Exception- and Error-Handling Strategies
- 294
- Determining Who Should Take Action
- 296
- Designing a Solution
- 299
- Brainstorm Exception Conditions
- 299
- Limit Your Scope
- 300
- Record Exception-Handling Policies
- 302
- Documenting Your Exception-Handling Designs
- 303
- Specifying Formal Contracts
- 307
- Reviewing Your Design
- 311
- Chapter 9
- Flexibility
- 315
- What Does It Mean to Be Flexible?
- 316
- Degrees of Flexibility
- 317
- The Consequences of a Flexible Solution
- 319
- Nailing Down Flexibility Requirements
- 320
- Recording Variations
- 324
- Variations and Realizations
- 327
- Identifying the Impact of a Variation
- 328
- Exploring Strategies for Realizing Flexibility
- 329
- Using Templates and Hooks to Support Variations
- 330
- The Role of Patterns in Flexible Designs
- 338
- Varying an Object's Behavior with the Strategy Pattern
- 338
- Hiding Interacting Objects with Mediator
- 339
- Making a Predefined Object or System Fit Using Adapter
- 340
- How Do Patterns Increase Flexibility?
- 340
- How to Document a Flexible Design
- 342
- Consider Your Audience
- 344
- Describing How to Make a Variation
- 345
- Changing a Working System's Design
- 350
- Chapter 10
- On Design
- 355
- The Nature of Software Design
- 356
- Tackling Core Design Problems
- 357
- Frame the Problem
- 358
- Dealing with Revealing Design Problems
- 361
- A Story About Managing Shared Information
- 362
- A Story About Connection Problem Complexity
- 363
- A Story About a Design Problem That Never Got Easier
- 364
- Can Revealing Problems Be Wicked, Too?
- 365
- Strategies for Solving Revealing Problems
- 366
- Redefining the Problem
- 368
- Synthesizing a Solution
- 369
- Working on the Rest
- 370
- Designing Responsibly
- 371.