As a geeky kid back in the late 70's I learned to program BASIC in the Italian Cuisine style - real spaggetti code. Man, I loved GOTO's. A whole maze of twisty little passages - or is that little twisting passsages? Moving on to university I learned Pascal, and procedural programing. I didn't continue programming after university, so that was as far as I got.
Jumping forward 20 years, I decided to take up programming again as a hobby. Things had rather moved on, to say the least. And whereas in many ways programming is easier today than it was back then, I struggled with the whole 'Object Oriented' concept. With this book I finally got it.
Budd starts from an assumption of having some understanding of programming, but starts from scratch with the whole OO concept. He covers basic OO terminology, and builds up from there. I find his style readable and friendly without being patronising (I'm looking at you, Heads First!), or skimping on technical details. It's well balanced in terms of information density, and the exercises helped me to retain the ideas and terminology. It also covers the 'why' as well as the 'how', which I needed, and seems to be glossed over in a number of other books. The order Budd covers the main points is also well thought out, laying down the foundations before covering more sdvanced ideas like inheritance and polymorhism.
The book is not language specific, which was really helpful - having code examples in multiple languages helped me to isolate the concept from the mechanics of implementation, while still demonstrating the code implementation.
Oh, and just in case you are wondering, there is a good reason he has a Duck-Billed Platypus on the cover. By the time I understand why, I was half way to my goal of understaining Object-Oriented Programming.