Корично изображение Книга

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.