by skowmunk on 12/3/10, 5:34 AM with 25 comments
I am a novice programmer, currently self-learning, would really like to understand Object Oriented Programming well. Can anyone suggest some books that are good at explaning OOP for beginners?
Thanks for the help in advance.
by philwelch on 12/3/10, 6:25 AM
Unfortunately, the C++/Java conception of OOP has had a much better sales team since the 90's or so, so you can get sucked into that universe and never find your way out again. So learn OOP from multiple perspectives.
by gruseom on 12/3/10, 6:14 AM
Don't take this as advice against learning what you want to learn, but I'd caution against the idea that "object-oriented programming" and "good programming" are the same thing (or even that they are correlated). OO in its various incarnations comes with a tremendous amount of baggage. It took me years to figure out I didn't need it, and that insight made me a much better programmer.
by mschwar99 on 12/3/10, 6:26 AM
http://video.google.com/videoplay?docid=-2058469682761344178...
It is an older video of Dan Ingalls of Smalltalk fame explaining objects. I clearly remember a large light bulb going off in my head as he walked through his analogy of a hospital described as an object.
This certainly isn't comprehensive, but if you are stuck on the concept its helpful to hear someone talk it out.
by flgb on 12/3/10, 6:33 AM
C2 is another resource worth checking out. C2 is the original "wiki". While its not always coherent and will structured, there are some real gold nuggets here: http://c2.com/cgi/wiki?ObjectOrientedProgramming
by flojito on 12/3/10, 7:32 AM
by YooLi on 12/3/10, 6:05 AM
http://www.amazon.com/dp/0596007124
Do not jump in with the GoF Design Pattern book. :)
by briandoll on 12/3/10, 6:44 AM
This is a fantastic book on OOP design principals and has lots of language-agnostic examples.
by abecedarius on 12/3/10, 8:54 AM
* Chapter 3 of http://mitpress.mit.edu/sicp/ -- also chapters 1 and 2.
* _Abstraction and Specification in Program Development_, on design by contract. There's a newer book by the same authors, _Program Development in Java_, but Norman Ramsey says it's not as good. (I've only read the older one.) By Liskov & Guttag. Focuses on abstract datatypes rather than OOP classic. Bertrand Meyer's _Object-Oriented Software Construction_ covers much of the same material, but not as well to my taste in the bits I dipped into.
* Also, _Smalltalk-80: The Language and Its Implementation_ at http://wiki.squeak.org/squeak/64 -- this might be more basic than the above two. The ideas were old to me by the time I got to it, so I don't know how well it'd work for a novice.
* I've seen _A Little Smalltalk_ recommended as an intro to OO and it looks plausible: http://www.littlesmalltalk.org/index.php?page=the-book -- I haven't read it myself.
by dtsingletary on 12/3/10, 6:24 AM
by felideon on 12/3/10, 6:15 AM
* The Art of the Metaobject Protocol by Gregor Kiczales
Don't let the second one fool you. Although it is a Lisp book, it presents OOP design principles applicable to any language. As the Amazon review says: "The Art of the Meta-Object Protocol is useful for the advanced CLOS user as well as for anyone interested in object-oriented programming and language design."
by duck on 12/3/10, 6:15 AM
Lots of OO classes use it and Smalltalk is a great language to learn OO with (but even if you don't use it, the general information will be a big help).
by thornkin on 12/3/10, 9:04 AM
by andre3k1 on 12/3/10, 7:25 AM
I understand that this is a monumental end goal given my current situation, but can anyone point me in the direction of the best tutorial books that money can buy?
Good karma for anyone that responds :)
by meadhikari on 12/3/10, 10:34 AM
by photon_off on 12/4/10, 7:51 AM
by skowmunk on 12/3/10, 2:38 PM