With software engineering books, it's hard to get the right mix of theory and practice. Object-Oriented Design in Java combines the best of today's thinking on software engineering with nuts-and-bolts examples written in Java. The result is this fine introduction to both disciplined software engineering and the strengths of Java for effective object-oriented design (OOD).
The text begins with a discussion of design and its necessity in writing successful software. Then it expands on the advantages of OOD. It offers a quick tour of Java's syntax, which becomes useful in later sections on class design in Java. Further chapters look at strategies for creating objects in OOD, including when to use inheritance, encapsulation, and composition. Here the authors introduce the basics of the Unified Modeling Language (UML) along with actual case studies of small class hierarchies modeled in Java.
Some of the most useful material is the authors' leading-edge discussion of patterns–reusable designs for software–with examples written in Java. Later sections of the book grow more theoretical, with discussions of such topics as concurrency, database persistence, guidelines for user interface design, component and class library reuse, and system architecture. –Richard Dragan
Mitchell Waite Signature Series: Object-Oriented Design in Java takes a tutorial approach and teaches in a new way: by offering the Java code first and the design representations and explanations later. No other programming-level book on the market deals with design of Java software. There's nothing aimed at the in the trenches Java programmer. Nor can the Java programmer turn to general books on software design. These, with few exceptions, are abstract and academic, either incomprehensible or irrelevant from the perspective of the working programmer. This book targets the needs of Java application programmers, using an experience-based, hands-on approach.