From the Publisher
Table of contents
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.
From the Author
Thanks for your kind interest. I hope you'll enjoy reading this on-going series on better software design. Along with the books, please also take a look at: The Coad Letter (free technical newsletter, http://www.oi.com/newsletters.htm), Together Professional (Jolt Award winning design tools, http://www.oi.com/together.htm), Hands-on "Object Models" and "Java Programming" Workshops (http://www.oi.com/ workshops.htm). Best wishes for great success, Peter Coad (firstname.lastname@example.org) ///// About Peter Coad: Peter Coad is the innovator behind the leading software development method that bears his name. He has co-authored books on all aspects of object-oriented development, including Object-Oriented Analysis; Object-Oriented Design; Object-Oriented Programming; Object Models: Strategies, Patterns, and Applications; and Java Design: Building Better Apps and Applets. Coad is probably the world's most experienced object-model builder: he has developed hundreds of object models to date. He founded Object International in 1986; its mission is "helping teams deliver frequent, tangible, working results." In addition to consulting, Object International publishes development tools, including Playground (a shareware object-modeling environment) and the award-winning Together/C++. Peter's current work focuses on Java-inspired design for building applications in Java or C++. Reach him at email@example.com, or visit Object International's Web site (http://www.oi.com).
--This text refers to an out of print or unavailable edition of this title.