| Foreword | |
| Acknowledgments | |
| Object-Oriented Software Development for the Macintosh | p. 1 |
| Introduction | p. 3 |
| Solution-Based Modeling for the Macintosh | p. 3 |
| Who Should Read This Book | p. 5 |
| How to Read This Book | p. 5 |
| Macintosh Software Development Today | p. 6 |
| Where Does the Money Go? | p. 7 |
| Myths and Realities in Software Development | p. 8 |
| Traditional Software Development for the Macintosh Is Even Worse | p. 12 |
| Macintosh Software Development As It Should Be | p. 15 |
| What Is a Good Model? | p. 15 |
| Five Characteristics of a Good Methodology | p. 16 |
| Benefits of Object-Oriented Programming | p. 18 |
| Problems With Object-Oriented Programming | p. 20 |
| Where Are the Methodologies? | p. 20 |
| The Sheer Cliff Principle | p. 21 |
| "It May Be Obvious to You, But It Isn't to Me!" | p. 21 |
| Object-Oriented Programming Is Still Worth the Effort | p. 21 |
| Summary | p. 22 |
| Object-Oriented Programming: The Technologist's Perspective | p. 25 |
| What This Chapter Is About | p. 25 |
| Objects | p. 26 |
| What Is An Object? | p. 26 |
| Terminology Review | p. 31 |
| Anthropomorphism | p. 32 |
| Inheritance and Polymorphism | p. 33 |
| Inheritance | p. 33 |
| Polymorphism | p. 35 |
| The Two Roles of Inheritance | p. 38 |
| Multiple Inheritance | p. 38 |
| Class Libraries | p. 42 |
| Variations on a Theme of OOP | p. 44 |
| Object-Oriented Programming on the Macintosh | p. 46 |
| Summary | p. 47 |
| The Folklore of Object-Oriented Software Development | p. 49 |
| What This Chapter Is About | p. 49 |
| Software and the Human Psyche | p. 50 |
| Objectivism | p. 50 |
| Object-Oriented Analysis, Design, and Programming | p. 51 |
| Creating High Fidelity Software | p. 52 |
| Discovering Objects | p. 52 |
| Discovering Relationships | p. 54 |
| Discovering Classes | p. 55 |
| Objectivist Methodology | p. 57 |
| Basic Steps | p. 58 |
| The Comfort of the Objectivist Approach | p. 59 |
| Program Evolution and the Four Itys | p. 59 |
| Problems With Objectivism | p. 61 |
| Summary | p. 62 |
| Sample Applications (Why Aren't They Easy?) | p. 65 |
| What This Chapter Is About | p. 65 |
| Model Railroad Computer-Aided Design | p. 66 |
| First Try: Lexical Analysis | p. 67 |
| Second Try: Top-Down Analysis | p. 72 |
| Third Try: Put It in Context | p. 73 |
| Fourth Try: Ask an Expert | p. 74 |
| Designing for the Macintosh and Its User Interface | p. 76 |
| Payroll | p. 80 |
| Current Business Model | p. 81 |
| Systems Objectives | p. 82 |
| First Try: Simulation | p. 83 |
| Second Try: Shuffling Responsibilities | p. 84 |
| Third Try: Ask an Expert | p. 86 |
| What Are the Macintosh Documents? | p. 87 |
| Summary | p. 89 |
| The Way We Think | p. 91 |
| What This Chapter Is About | p. 91 |
| Categories | p. 92 |
| Basic Level Categories | p. 92 |
| Not-So-Basic Categories | p. 93 |
| Categories and Classes Are Not the Same | p. 96 |
| Reconciling Categories and Classes | p. 97 |
| Schemas and Contexts | p. 97 |
| Image-Schematic Relationships | p. 98 |
| Propositional Relationships | p. 99 |
| Metaphoric Relationships | p. 99 |
| Metonymic Relationships | p. 100 |
| The Importance of Context | p. 100 |
| The Myth of Reusability | p. 101 |
| The Sheer Cliff Principle Explained | p. 102 |
| When Does the Folklore Work? | p. 102 |
| Why the Sheer Cliff Exists | p. 103 |
| Avoiding the Sheer Cliff: Solution-Based Modeling | p. 103 |
| Categories and Image Schemas in Macintosh User Interfaces | p. 104 |
| Summary | p. 108 |
| Solution-Based Modeling for the Macintosh | p. 109 |
| The Visual Design Language | p. 111 |
| What This Chapter Is About | p. 111 |
| Overview of VDL | p. 111 |
| Visual Communication | p. 111 |
| Escaping Flatland | p. 112 |
| Using Image Schemas | p. 115 |
| Constraints on the Notation | p. 115 |
| Contents of the Models | p. 116 |
| Examples of VDL | p. 117 |
| Elements | p. 122 |
| Natural World Elements | p. 122 |
| Program Elements | p. 123 |
| Attributes | p. 124 |
| Responsibilities | p. 125 |
| Relationships | p. 125 |
| Structural Relationships | p. 125 |
| Behavioral Relationships | p. 127 |
| Calibration Relationships | p. 128 |
| Same As | p. 130 |
| Spatial Effects | p. 130 |
| Planes and Regions | p. 130 |
| Time Sequence | p. 131 |
| Relative Importance | p. 131 |
| Frames | p. 133 |
| Scenarios | p. 133 |
| Vertical Slicing | p. 135 |
| Extensions | p. 136 |
| Summary | p. 136 |
| Solution-Based Modeling | p. 139 |
| What This Chapter Is About | p. 139 |
| Objectives | p. 139 |
| Solve the Right Problem | p. 140 |
| Create Reliable, Maintainable Programs | p. 141 |
| Solution-Based Models | p. 141 |
| Business Plane | p. 143 |
| Technology Plane | p. 145 |
| Execution Plane | p. 150 |
| Program Plane | p. 152 |
| Relationships | p. 153 |
| Frames | p. 154 |
| Scenarios | p. 155 |
| Solution-Based Modeling | p. 159 |
| Processes | p. 159 |
| Project Organization | p. 163 |
| Summary | p. 167 |
| Analysis Part I: The Business Plane | p. 169 |
| What This Chapter Is About | p. 169 |
| Overview of the Analysis Phase | p. 170 |
| Objectives | p. 170 |
| Business Modeling | p. 171 |
| Conceptual Design | p. 171 |
| Design and Programming During Analysis | p. 171 |
| Activities | p. 172 |
| The Business Plane | p. 172 |
| Reference Model | p. 173 |
| Overview | p. 174 |
| Frame | p. 174 |
| Model | p. 178 |
| Calibration Part I: Synthesis | p. 183 |
| Solution Model | p. 187 |
| Overview | p. 188 |
| Frame | p. 189 |
| Model | p. 195 |
| Impact Analysis | p. 199 |
| Existing Computer Systems | p. 201 |
| Summary | p. 202 |
| Analysis Part II: The Technology Plane and Beyond | p. 205 |
| What This Chapter Is About | p. 205 |
| Content Model | p. 206 |
| Overview | p. 207 |
| Content Frame | p. 207 |
| Elements and Relationships | p. 207 |
| Building the Content Model | p. 208 |
| Object-Oriented Software Engineering, Part I | p. 213 |
| Achieving Independence: An Overview | p. 214 |
| Limiting Responsibilities | p. 215 |
| Limiting Data Knowledge | p. 215 |
| Limiting Implementation Knowledge | p. 216 |
| Limiting Relationships | p. 217 |
| Conflicts among the Limits | p. 218 |
| Calibration, Part II: Correlation | p. 219 |
| User Interface Model | p. 223 |
| Overview | p. 223 |
| User Interface Frame | p. 224 |
| Elements and Relationships | p. 225 |
| Building the User Interface Model | p. 231 |
| The Environment Model | p. 232 |
| Elements and Relationships | p. 233 |
| Building the Environment Model | p. 233 |
| The Execution and Program Planes During Analysis | p. 233 |
| Prototyping | p. 234 |
| Advance Scouting | p. 237 |
| Completing the Analysis Phase | p. 238 |
| How Do You Know When You Are Done? | p. 238 |
| Estimating, Scheduling, and Planning | p. 239 |
| Summary | p. 240 |
| Design | p. 243 |
| What This Chapter Is About | p. 243 |
| Overview | p. 244 |
| Using CPC During Design | p. 244 |
| Program Objects vs. Conceptual Objects | p. 245 |
| Adding Detail | p. 245 |
| Adding New Objects | p. 246 |
| Run-Time Objects | p. 246 |
| How Are Objects Implemented? | p. 247 |
| Classes vs. Abstractions | p. 251 |
| Categories vs. Abstractions | p. 252 |
| Building the Execution Plane | p. 253 |
| All Regions | p. 253 |
| Content Architecture | p. 259 |
| User Interface Architecture | p. 261 |
| Environment Architecture | p. 263 |
| Dependency Management | p. 264 |
| Basic Principles | p. 265 |
| A Generic Scenario for Dependency Management | p. 267 |
| Implementing Dependency Management | p. 268 |
| Calibration, Part III: Synchronization | p. 269 |
| Knowledge of Other Objects and Data | p. 270 |
| Creation and Initialization | p. 271 |
| Destruction | p. 272 |
| Protocol | p. 273 |
| Connectedness | p. 273 |
| Applying Synchronization | p. 275 |
| Managing the Design Phase | p. 275 |
| Use of Scenarios | p. 276 |
| Priorities | p. 276 |
| Prototyping | p. 277 |
| When Is the Design Phase Complete? | p. 278 |
| Managing the Transition to Implementation | p. 278 |
| Summary | p. 279 |
| Programming | p. 281 |
| What This Chapter Is About | p. 281 |
| Overview | p. 281 |
| Designing Class Hierarchies | p. 283 |
| (At Least) Six Ways to Implement Abstractions | p. 284 |
| Choosing the Best Strategy | p. 290 |
| Object-Oriented Software Engineering Using Inheritance | p. 300 |
| What Does a Class Inherit? | p. 301 |
| Normal Inheritance | p. 304 |
| Inheritance: The GOTO of the 90s? | p. 308 |
| Programming | p. 309 |
| Managing the Programming Phase | p. 315 |
| Use of Scenarios | p. 315 |
| Quality Assurance | p. 316 |
| Use of Prototype Code | p. 316 |
| When Is the Programming Phase Complete? | p. 316 |
| Beyond Programming | p. 317 |
| Summary | p. 318 |
| Appendix: A Manual Database for Solution-Based Modeling | p. 319 |
| Bibliography | p. 323 |
| Index | p. 329 |
| Table of Contents provided by Blackwell. All Rights Reserved. |