You will need a reference manual as well, but this book deserves a place on your shelves, especially if you are finding that understanding the concepts is the hardest part of learning OO.
(This book was reviewed by Colin Harkness in C Vu 10.6. However, we recently set it as the course text for a one-week introduction to OOP for industrial students, and this review is written in the light of that course.) The shops are full of Java books. Most of them attempt to teach the syntax and features of Java, but many are very poor at applying those features. As I'd hoped from an author of Budd's experience, this book is different. It is an introduction to OOP, which happens to use Java for illustration purposes.
The OOP aspects of this book are excellent, from the early discussions of coupling and cohesion, through an exemplary comparison between inheritance and composition, to an exhaustive classification of the various forms of polymorphism. There is even an introduction to Design Patterns.
The Java used is current for version 1.1, with discussion of both inner classes and their use with the new AWT event model, and there are good chapters on the basic Java libraries including input/output streams, graphics, collection classes, and AWT. Applets are covered in seven pages in the last chapter.
The choice of examples is again good, with substantial cannon, pinball and card games. Perhaps the weakest aspect of the book is the quality of the code in the examples, with static public data used to communicate between objects.
As Budd notes in the preface,
This book will help you understand Java. It makes no pretensions to being a language reference manual. You will need a reference manual as well, but this book deserves a place on your shelves, especially if you are finding that understanding the concepts is the hardest part of learning OO.