Object Oriented Programming Books

A few people have asked for recommendations of good foundational Object Oriented Programming texts. The truth is I’m kind of behind on my formal OOP reading, and some of the early texts I read I wouldn’t recommend. My first proper OOP book was Object-Oriented Analysis and Design with Applications by Booch, and while it’s not a bad book, I remember it being awfully dry.

Honestly, most of what I know I learned from surfing WikiWiki. It’s still the best source of collected software development thought on the planet, albeit not the most organized. I highly recommend killing an hour or hundred link-surfing WikiWiki.

I haven’t read all of it yet, but Object-Oriented Software Construction, by Bertrand Meyer, is probably one of the better guides out there about how to think of the world in terms of objects with well-defined responsibilities.

I can wholeheartedly recommend Kent Beck’s Smalltalk Best Practice Patterns. It masquerades as a book about Smalltalk, but it’s really a book about how to write clean OO code all the way down at the method level.

I have a long list of OO books I’ve been meaning to get to. I hear good things about both Domain-Driven Design and Growing Object-Oriented Software, Guided by Tests. I’ve always wanted to read some of Rebecca Wirfs-Brock’s work, such as Object Design: Roles, Responsibilities, and Collaborations, as well as Uncle Bob’s take on the subject. Speaking of Uncle Bob, his Ruby Midwest keynote piqued my interest in Ivar Jacobson’s book on use-case driven OOP.

Obviously, this list is far from comprehensive. So I’d like to open the floor: what books do you consider essential first-level Object Oriented reading material?