A complete revision and update of the best-selling analysis and design text on the market. It includes new information pertaining to design issues in JDK 1.1/1.2, six new interface design strategies, coverage of large-scale design with Enterprise Java Beans, and UML 1.1 notation. Includes a CD-ROM with a full whitboard version of Together/J, a world-class Java analysis and design tool (nominated for 1998 Jolt Award).
Peter Coadis creator of the widely-practiced Coad method, a comprehensive approach to software development. As Chairman of Object International, Inc., he leads a team of object-oriented educators and consultants who assist clients such as Bell Laboratories, EDS, Harris, Hewlett-Packard, Hughes, Intel, MCI, Perot Systems and Prudential. His recent books include Object Models: Strategies, Patterns and Applications.
Mark Mayfieldis the co-originator of the field of object model patterns, working with Peter Coad in this area since 1991. A multi-domain practitioner, he has built hundreds of object models in many application areas, both business and real-time. As chief consultant at Object International, Inc., he specializes in helping teams build effective object models, guiding them from concept exploration through delivering results.
Why Java Design?
Design. Java-Inspired Design. A Design Book. The Companion CD-ROM. How to Get Updates. Feedback, Hands-on Workshops, and Mentoring.Chapter 1: Design by Example.
Five Major Activities. Example, Example, Example. Charlie's Charters. Identify the Purpose and Features. Select the Classes. Sketch a UI. Work Out Dynamics with Scenarios. Build a Class Diagram. Zoe's Zones. Identify the Purpose and Features. Selecting Classes. Sketch a UI. Work Out Dynamics with Scenarios. Build a Class Diagram. Summary.Chapter 2: Design with Composition, Rather than Inheritance.
Composition. Composition: An Example. Inheritance. Inheritance vs. Interfaces. Inheritance: An Example. Inheritance: Benefits. Inheritance: Risks. Inheritance: When to Use It. Inheritance: Checkpoints. Example: Composition (the Norm). Example: Both Composition and Inheritance. Example: Inheritance (the Exception). Example: Inheritance in Need of Adjustment. Example: Thread. Example: Applet. Example: Observable. Summary.Chapter 3: Design with Interfaces.
What Are Interfaces? Why Use Interfaces? The Problem. A Partial Solution. Flexibility, Extensibility, and Pluggability-That's Why. Factor-out Interfaces. Factor Out Repeaters. Factor Out to a Proxy. Factor Out for Analogous Apps. Factor Out for Future Expansion. A Short Interlude: Where to Add Interfaces. Design-in Interfaces. Design-in Interfaces Based on Common Features. Design-in Interfaces Based on Role Doubles. Design-in Interfaces Based on Behavior Across Roles. Design-in Interfaces Based on Collections and Members. Design-in Interfaces Based on Common Interactions. Design-in Interfaces Based on Intra-Class Roles. Design-in Interfaces Based on a Need for Plug-in Algorithms. Design-in Interfaces Based on a Need for Plug-in Feature Sequences. Design with Interfaces: Applying Multiple Strategies. Designing-in Flexibility Is a Very Good Thing. Yet There Usually Is a Design Tradeoff: Simplicity vs. Flexibility. Naming Interfaces Revisited. What Java Interfaces Lack. Summary.Chapter 4: Design with Threads.
Threads. What Is a Thread? How Do Threads Get Started? Why Use Multiple Threads? If You Don't Need Multiple Threads, Don't Use Them. Sync. Sync: A Guarantee and a Nonguarantee. Sync: Scope. Shared Value (and Keeping Out of Trouble). Don't Sync Longer Than You Have To. Shared Resource (and Keeping Out of Trouble). Multiple Clients, Multiple Threads within an Object. Multiple Thread Objects, Multiple Threads within an Object. Single Thread. Prioritized-Object Threads. Prioritized-Method Threads. Prioritized-Method Prioritized-Object Threads. Overall Point. Interface Adapters. Need. One Approach: Dispatcher. A Better Approach: Interface Adapters. What an Interface Adapter Looks Like. Interface Adapters for Zoe's Zones. A Zone-Monitoring Thread. A Sensor-Assessing Thread and a Sensor-Monitoring Thread. Summary.Chapter 5: Design with Notification.
Passive Notification. Timer-Based Notification. Timer-Notification Pattern. A Timer for Charlie's Charters. Active Notification. Observable-Observer. Source-Listener. Source-Support-Listener (JavaBeans-Style Notification). Producer-Bus-Consumer (InfoBus-Style Notification). Model-View-Controller (Swing-Style Notification). Source-Distributed Listeners (Enterprise JavaBeans-Style Notification). Summary.Appendix A Design Strategies. Appendix B Notation Summary. Appendix C Java Visibility. Bibliography. Index.