I am looking for good resources (books/web sites) for learning object oriented design. Every resource that I find are tutoring me more on UML and RUP instead of OO design. Head first book's sheer repetition is making me not want to read any of their books. I am looking for a book similar to "Structure and interpretation of computer programs" for object oriented design that gets to the point of teaching OO. I have no preference for any specific OO laguage.
Object-Oriented Analysis and Design with Applications by Grady Booch is the bible for this topic. It is also very approachable though somewhat dense at points, but definitely worth reading and re-reading.
I have to admit that the Head First Design Pattern is really a nice book but the famous Design Patterns: Elements of Reusable Object-Oriented Software is still a must read too.
On the web, the What Is Object-Oriented Design? page of the Object Mentor website is another great resource.
Quoting myself from another answer on the same topic:
Great resources to learn how to think in patterns and do correct OOP analysis and design are Analysis Patterns: Reusable Object Models by Martin Fowler and Applying UML and Patterns by Craig Larman. Also I need to mention here Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans, the most valuable book I found to think about the whole software design process.
I haven't read but have heard really good things of: Object-Oriented Design Heuristics by Arthur J. Riel.
A typical amazon review of the book:
If you're experienced with language-specifics, and ready to get a grasp on the better ways to implement your designs so that they are more maintainable and logical, then grab this text.
Also as replacement for the Gang of Four book.
I can recommend: The Design Patterns Smalltalk Companion
In general learning Smalltalk will help you to be a better OOP Developer on any language.
From the Amazon reviews:
Easier to understand than the original GoF, February 4, 2000 By Nicolas Weidmann
This book gives you a better understanding of the patterns than in its original version (the GoF one). I am not a SmallTalk programmer but a 9 years C++ one. At work I had to use the GoF book and never liked reading it. In contrast to this, the SmallTalk companion is easy to read and you can understand the patterns within the first few lines of their description. Take the Bridge pattern and compare their discussions in the two books. If you really like the Gof one then buy it. But according to me, it would be a big mistake buying the GoF in favour of the SmallTalk companion. Trust a C++ programmer :-)
For examples of good OO Designs
You can look at:
Holub on Patterns: Learning Design Patterns by Looking at Code