TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Ask HN: What are some good books for understanding OOP?

22 点作者 skowmunk超过 14 年前
Hi,<p>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?<p>Thanks for the help in advance.

16 条评论

philwelch超过 14 年前
The most important thing to realize is that "object-oriented programming" isn't a well defined term. If you don't know what it means and you pick up books about Smalltalk or CLOS, you won't really have a good grasp on the corporate C++/Java/C# environments you might be thrown into, and if you get a job interview that asks "explain OOP to me", they won't have any fucking idea what you're talking about, because by "OOP" they mean Java and by "OOP" you'll mean Smalltalk or CLOS. Likewise, if you pick up a Java book, it'll take you awhile to figure out what Smalltalkers, Lispers, and Rubyists are on about.<p>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.
评论 #1965041 未加载
评论 #1965166 未加载
gruseom超过 14 年前
In my opinion, Eric Evans' <i>Domain Driven Design</i> is just about the only book that gets OO right. Martin Fowler's <i>Refactoring</i> is pretty good on the technical side of things. I would avoid design patterns like the plague (edit: other than the Kent Beck Smalltalk book, which lots of smart people like - this is the one recommended by duck in this thread), but others disagree.<p>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.
mschwar99超过 14 年前
I know you asked for a book, but as a fellow self taught person I remember this video being really valuable to me when trying to get my head around OOP.<p><a href="http://video.google.com/videoplay?docid=-2058469682761344178#" rel="nofollow">http://video.google.com/videoplay?docid=-2058469682761344178...</a><p>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.<p>This certainly isn't comprehensive, but if you are stuck on the concept its helpful to hear someone talk it out.
flgb超过 14 年前
I think this document provides a good introduction for a beginner: <a href="http://www.runningcode.com.au/Resources/Aitken-Framework4OO.pdf" rel="nofollow">http://www.runningcode.com.au/Resources/Aitken-Framework4OO....</a><p>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: <a href="http://c2.com/cgi/wiki?ObjectOrientedProgramming" rel="nofollow">http://c2.com/cgi/wiki?ObjectOrientedProgramming</a>
flojito超过 14 年前
I would recommend you OOSC (Object oriented software construction) by Bertrand Meyer. A mammouth book. Its length, which could be a hindrance, is its best point: you'll have plenty of explanations for every concept.
YooLi超过 14 年前
Since you say you are a novice, I'd recommend Head First Design Patterns:<p><a href="http://www.amazon.com/dp/0596007124" rel="nofollow">http://www.amazon.com/dp/0596007124</a><p>Do not jump in with the GoF Design Pattern book. :)
评论 #1965203 未加载
评论 #1965003 未加载
评论 #1964969 未加载
briandoll超过 14 年前
Object-Oriented Design Heuristics: <a href="http://amzn.to/hMfVA6" rel="nofollow">http://amzn.to/hMfVA6</a><p>This is a fantastic book on OOP design principals and has lots of language-agnostic examples.
abecedarius超过 14 年前
I don't know of any books that sound exactly right for you, but here are a couple I like that are relevant. You might find them kind of advanced right now:<p>* Chapter 3 of <a href="http://mitpress.mit.edu/sicp/" rel="nofollow">http://mitpress.mit.edu/sicp/</a> -- also chapters 1 and 2.<p>* _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 &#38; 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.<p>* Also, _Smalltalk-80: The Language and Its Implementation_ at <a href="http://wiki.squeak.org/squeak/64" rel="nofollow">http://wiki.squeak.org/squeak/64</a> -- 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.<p>* I've seen _A Little Smalltalk_ recommended as an intro to OO and it looks plausible: <a href="http://www.littlesmalltalk.org/index.php?page=the-book" rel="nofollow">http://www.littlesmalltalk.org/index.php?page=the-book</a> -- I haven't read it myself.
dtsingletary超过 14 年前
The Object-Oriented Thought Process ( <a href="http://www.amazon.com/Object-Oriented-Thought-Process-3rd/dp/0672330164/ref=sr_1_1?s=books&#38;ie=UTF8&#38;qid=1291357348&#38;sr=1-1" rel="nofollow">http://www.amazon.com/Object-Oriented-Thought-Process-3rd/dp...</a> ) isn't a perfect book, but it's not a bad one. It refers too much to other books, but combine that with a language text and you should get the concepts pretty well.
felideon超过 14 年前
* Smalltalk Objects And Design by Chamond Liu<p>* The Art of the Metaobject Protocol by Gregor Kiczales<p>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."
评论 #1964965 未加载
duck超过 14 年前
Check out "Smalltalk Best Practice Patterns": <a href="http://www.amazon.com/dp/013476904X/" rel="nofollow">http://www.amazon.com/dp/013476904X/</a><p>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).
评论 #1965195 未加载
thornkin超过 14 年前
I found the first chapter of Design Patterns to be the most enlightening description of OO programming I have found.
andre3k1超过 14 年前
I have an intense desire to contribute to the Chromium Project, however, I too am a programming novice. I know a bit of Java, but not much else.<p>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?<p>Good karma for anyone that responds :)
评论 #1966141 未加载
meadhikari超过 14 年前
Object Oriented Programming by Timothy Budd. Its the starting book that I got and is proving very helpful to me.
photon_off超过 14 年前
I highly recommend Head First Java, which focuses on OOP using Java. The entire Head First series is very well written, and focuses on practical <i>learning</i> rather than reference or academia as a lot of the suggestions do.
skowmunk超过 14 年前
Thank you all for the suggestions. Its given me a lot of food for thought.