I’ve had Timothy Budd’s textbook on object-oriented programming on my bookshelf for some time. It was a textbook in one of my undergraduate courses and, at the time, it only received a fairly cursory inspection (though not before becoming the source for one of my collected quotes). I decided to read it more or less cover-to-cover to refresh myself on the nuts and bolts level of object oriented ideas.
Probably the most useful thing I took from the book is a much clearer sense of the distinction between overloading and overriding. It’s a distinction which at first seems a bit academic, but then you discover that one can be settled at compile time and the other only at runtime. Then it matters quite a bit.
Also of value is that Budd uses a wide selection of OO languages as examples. Java and C++ form the bulk of the code, but numerous other languages make appearances. The wide selection allows Budd to contrast different approaches that languages can take. A lot of the time I found myself relieved that I don’t program in C++, which thanks to its design constraints is a fountain of accidental complexity.
The text is generally straightforward; I only had one or two places where a closer reading was required. The diagrams are clearly the author’s. Sending his Word diagrams to a professional designer might have made them a bit easier on the eyes.
The key, though not fatal, weakness of the text is its age. The 3rd edition was written in 2001. Java and C# were still young, Ruby had not yet risen to its current prominence and the great bifurcation of the software development world into pre-blog and post-blog bodies of knowledge had yet to really take hold. In many ways this book is a capstone on the glory days of OOP — the 1990s. As we look back now, OOP has simply faded into the firmament, a paradigm so dominant that other conceptual approaches are best distinguishable by their not-OOPness. Some things faded more than others, of course — where now the frantic collecting and publishing of patterns?
All in all it is a passable book. For those wanted a general introduction to the larger body of work up through the 90s, Budd’s book is suitable. Otherwise, I suspect, most practitioners these days are osmosing their OOP concepts from tweets.