Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Possible Duplicate:
Suggest an Introductory OO Text for a (smart) non-programmer?

I'm searching good book that teaches how OOP works, best practices, patters (I guess, not sure) and other useful stuff. I work with PHP, so I'm not forced to do OOP at all... anyway, I can. That doesn't mean that I know how - that's why I'm looking for some global standards that are not related to any programming language.

Please one book per answer. Thanks in advice!

share|improve this question

marked as duplicate by Mark Trapp Dec 9 '11 at 4:28

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

    
Any book on smalltalk will teach you OOP. Also reading about Self is good to learn prototypical OO –  Raynos Jul 19 '11 at 20:36
    
amazon.com/… –  loki2302 Jul 19 '11 at 20:36
    
oreilly.com/catalog/9780596007126 –  Ben Gale Jul 19 '11 at 20:38
    
@loki +1 for the Timothy Budd book. This is the one that helped me have that "Now I get it!" moment with OOP. And it's got a Duck-Billed Platypus on the front, for reasons that will become apparent if you read the book. –  HMcG Jul 19 '11 at 23:15
    
I suggest you read OOP in your programming language. It is easier when you see examples that you can test, and read in your own programming language. –  Emmad Kareem Sep 1 '11 at 21:03

3 Answers 3

up vote 8 down vote accepted

I am a big fan of the Head First series of books. It's done in Java, although it's not "related" to Java so much as the concepts they portray. Check out Head First Design Patterns For a excellent introduction on design patterns and how to apply OO techniques to create flexible, maintainable code. If you have NO OO experience (inheritance, polymorphism, etc) then I would recommend their Head First Java book instead (which would apply to any OO language as well).

share|improve this answer
1  
I agree with mclark's answer but possibly try Head First Object Oriented Analysis and Design before Design Patterns, as it covers the foundational concepts/principles in more depth. Design Patterns are then tried and true patterns built on those concepts. –  Eoin Carroll Sep 1 '11 at 21:18

I recently had a flick through The Object-Oriented Thought Process and thought it looked like a good book that fits what you are after.

share|improve this answer
    
That's an outstanding read. (And the author doesn't take a tone like he's speaking to a small child like so often is done in the Head First series.) –  Nick Sep 1 '11 at 21:12

I would say look at Object Thinking by David West. It contains a lot of extra noise, especially the early chapters. But the ending chapters cover object oriented design from a different perspective. Basically it's about object thinking. You focus on behavior and how to assign responsibilities to objects, letting the rest fall into place.

Ultimately I read both head first design patterns, and object oriented analysis as well as the gang of four design patterns book. While the patterns are great and do teach you the power of composition and delegation over inheritance, that knowledge does not itself help you to break up a system you are designing. Many of them do focus on separating out the inheritance to just the thing that changes, but the ideas on separating out behavior are not as explicit with design patterns. I found some of the ideas in object thinking more practical, especially the CRC cards (which actually are in other Agile type books as well). But design patterns are still valuable, many standard libraries use them and sometimes other developers will mention them in conversation, so not knowing the patterns can put you behind. But Object thinking will help you take whatever you want to write, separate it into responsibilities, and distribute those responsibilities among your objects.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.