Tell me more ×
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.

I'm looking to really grasp OO once and for all.

Any recommendations on a good Objected-Oriented book?

I program in .Net, so if it's .Net oriented all the better.

Regards,

share|improve this question
See also the lots of similar threads on SO. – Péter Török Feb 2 '11 at 8:28
1  
Allen Holub's "Holub on Patterns" (amazon.com/Holub-Patterns-Learning-Design-Looking/dp/159059388X) is a very interesting read: both addressing common pitfalls of "OOP-ish" (but not in fact OO) practices and providing a example/tutorial comprehensive enough to make the reader sure the author himself really knows the OOP trade (a full-fleged SQL interpreter (holub.com/software/holubSQL)). – mlvljr Feb 10 '11 at 0:57

closed as not constructive by Mark Trapp Nov 22 '11 at 17:28

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or specific expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, see the FAQ for guidance.

13 Answers

up vote 1 down vote accepted

I don't think a single book will get you up to speed. Do do do, read other's people's code and discuss.

But to get you started I would recommend the following books in that order. In my mind the next step after OO thinking is patterns, if you know the basic you see them applied in the patterns and you can learn the trade off's, making you better in OO.

  1. Head First Object-Oriented Analysis and Design (Head First) [ILLUSTRATED] (Paperback)
  2. Applying UML and Patterns (Hardcover)
  3. Agile Principles, Patterns, and Practices in C# (Robert C. Martin Series) (Hardcover)

After that you are ready for the basic gang of four design patterns

  1. Head First Design Patterns (Head First) [ILLUSTRATED] (Paperback)
  2. The Design Pattern BIBLE
share|improve this answer
Thanks for your comments and links. Very handy I will look into those books. – TeaDrinkingGeek Feb 2 '11 at 9:56
I always thought "The Art of Computer Programming" was the bible. Maybe TAOCP is the old testament and Design Patterns is the new testament then? – nikie Feb 2 '11 at 10:55
:) okay small nuance it is the design pattern bible – KeesDijk Feb 2 '11 at 11:00

Cover

Object Thinking from Microsoft Press.

This book is really well written and goes deep into real object orientation - how to break out of procedural thinking and structure your code as interacting objects.

share|improve this answer
A bit expensive compare to some of the other OO books recommended here. Is it worth the price? – TeaDrinkingGeek Feb 2 '11 at 9:57
Absolutely! I'm probably luckier - as I'm in India and the Indian edition is really cheap (400 bucks - that's around $8) without compromising on the paper quality. That said, it's a really good book. – talonx Feb 2 '11 at 12:05
Great book on pure OO theory. Translating the theory into practise using .NET is a challenge because the theory goes against the grain of useful .NET features such as data-binding. For less radical, more practical advice, I recommend 'Object Design: Roles, Responsibilities and Collaborations'. – Ed James Feb 3 '11 at 11:06
The link seems to be down – Mahmoud Hossam Feb 18 '11 at 2:10
Just tried the link - seems to be working now. – Bevan Feb 20 '11 at 23:08

I highly recommend Head First Design Patterns.

share|improve this answer
i like this book as well – mazhar kaunain baig Feb 2 '11 at 10:05

Object Oriented Software Construction, 2nd Edition, by Bertrand Meyer.

Book cover

Take a look at the table of contents of the book in Wikipedia.

share|improve this answer

Object Oriented Thought Process by Matt Weisfeld

(Sorry, I don't know a good link to this)

share|improve this answer
1  
Here is a link: bookdepository.com/book/9780672330162/… – KeesDijk Feb 2 '11 at 8:38
Seconded. Good read. – Kevin Feb 7 '11 at 18:37

Object Design: Roles, Responsibilities, and Collaborators

Object Design: Roles, Responsibilities, and Collaborations is a complete, superbly detailed, if somewhat advanced, definition on what it takes to build an object-oriented system.

share|improve this answer

If you already have a good grasp of OOP principles from C++, then really all you need is a Java reference manual that has examples. I would recommend the Core Java books by Horstmann and Cornell (at least Vol. 1, and maybe Vol. 2 as well if you are interested in the topics in it).

If you learned C++ only as an afterthought to learning C, then you maybe are missing the OOP concepts and big picture. You'll need to have a pretty good understanding of OOP to really grok Java programming, since Java was designed as a OOP language only, while C++ can be used for a structured programming style in addition to its OOP features. (As a university computer programming instructor, I have run into many people who say they know C++ very well, but their programs were always written in a structured programming style, starting topdown with main() and breaking down into subfunctions, and maybe grouping some of the subfunctions as static functions in a "class", but they couldn't really do OOP - starting with the classes needed first and writing main() last, writing proper constructors/destructors/copy constructors, information hiding, recognizing when inheritance and virtualization would help them reuse code and/or make their program more flexible, etc.) If that's the case, then I would recommend starting with a book more like an "introduction to programming using Java" book that emphasizes objects. Head First Java, part of the O'Reilly series, is a good short fun book. Cay Horstmann has a series of Java textbooks that are also pretty good, introducing creating classes and objects in a very early chapter and using them throughout.

If you want the true master-level view of Java, then I would recommend Bruce Eckel's Thinking In Java. He really delves into the what and the why of why Java is the way Java is. Sources: Amazon

share|improve this answer
I come from a VB background, haven't touch C++. – TeaDrinkingGeek Feb 2 '11 at 9:57


Applying UML Patterns (link)

Martin fowler, a well respected programmer, says this about this book: "People often ask me which is the best book to introduce them to the world of OO design. Ever since I came across it, Applying UML and Patterns has been my unreserved choice."

I have the book, but haven't read it yet.

If you really feel like you want to start at the beginning, you may want to read this:

Object Oriented Thought Process (link)

I've read it, and it's a great introduction to OO concepts.

edit: apparently I need more reputation to post images :(

share|improve this answer

I find Object-Oriented Programming with Visual Basic .NET, may be help to you. And, Head First Object-Oriented Analysis and Design is based on Java, but helps to get the OOP degign concept.

share|improve this answer

Object Thinking by David West has already been mentioned. In addition, I would suggest the Wyrfs-Brock books. (None of these are .NET specific, though)

share|improve this answer

I found Timothy Budd's "An Introduction to Object-Oriented Programming" to be a good introduction to OO. In particular, Budd compares several different OO languages, including C++, Delphi, CLOS, Smalltalk, Objective-C, Java.

share|improve this answer

If you want a book that (IMHO) uses on the ideas presented in Object Design: Roles, Responsibilities and Collaborations and applies them to the real world object-orientated development in a modern, cutting edge manner then I highly recommend Growing Object-Oriented Software, Guided by Tests. It's Java but I found it easy to follow (I'm .net too).

share|improve this answer

I would have to second:

Head First Object-Oriented Analysis and Design (Head First) [ILLUSTRATED] (Paperback)

and

Head First Design Patterns (Head First) [ILLUSTRATED] (Paperback)

share|improve this answer

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