I found this a very interesting, well written and presented book (as one would expect from Peter Coad).
Design is just as important as programming in overall system implementation. The subtitle of this text is 'Building better applications and applets' and is aimed at choosing better design strategies inspired by the features of the Java language.
The first chapter introduces design using two practical case studies; in effect breaking the design process (which is then used in the rest of the book) down into five concurrent activities: identify system purpose and features, select classes, sketch user interface, work out dynamics with scenarios and build an object model. There are then four chapters concentrating on particular aspects of design with Java. Design with composition: the thesis being composition (being more flexible) should be the norm and inheritance (being more rigid) the exception, i.e. deciding when inheritance should be used. Design with interfaces: how Java style interfaces support 'flexibility, extensibility and pluggability'. Design with threads: how to use concurrency with safety, i.e. problems with shared resources, deadlocks, synchronising, etc. Design with notification: how objects notify each other about changes. Throughout designs are illustrated using a mixture of Coad object model, Coad scenario view and UML (Unified Modelling Language) notation.
I found this a very interesting, well written and presented book (as one would expect from Peter Coad). It would be suitable as a text for a course on program design where Java is being used as the implementation language or on a Java programming course as a secondary text to highlight design aspects. Also useful for the professional programmer concerned with the design of large Java based systems. Recommended!