When I first picked up this book, I was hoping to read insightful commentary on the process of developing object-oriented software. Instead, the book opens up with basic information about OO constructs (e.g. 'what exactly is a class?'), illustrated with Java code. I found this somewhat baffling. Surely, anyone that can understand Java understands what a class is?
Some of the chapters of the book were potentially useful, discussing (in a relatively basic way), for example, the advantages of clearly defined interfaces, and abstraction. These chapters might be useful reading to someone who had just got to grips with the syntax of an OO language, but was lacking guidance for system design. A detailed example showing how a blackjack game might be designed worked well, and was clearly written.
Towards the end, I felt that the author was trying to bulk out the book. A nod to patterns included an implementation of 'Singleton'. Mentioning patterns I thought appropriate, but the level of detail was almost certainly not. Perhaps a more general description of the wider use of rather more interesting patterns might have been more useful here.
In short, about half of this book would be reasonably good introduction to OO programmers who have just started learning a programming language but needed help seeing the big picture. Much of the rest, in my opinion, fails due to a lack of focus on the target audience.