TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Ask HN: Are there any courses/course materials that teach oop concepts well?

26 pointsby __striskalmost 8 years ago
I am trying to find a good course that outlines the essential topics for object oriented programming and encourages practical applications of the theory.

9 comments

joeyrosztoczy1almost 8 years ago
This is an all time favorite: Sandi Metz&#x27; Practical Object Oriented Design <a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;gp&#x2F;product&#x2F;0321721330&#x2F;ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0321721330&amp;linkCode=as2&amp;tag=sandimetzcom-20&amp;linkId=d5bd799fb895b56032932fc813dca07d" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;gp&#x2F;product&#x2F;0321721330&#x2F;ref=as_li_tl?ie...</a><p>It takes the cognitive overhead off of the programming language completely and focus on design principles in a really modern learning style.
评论 #14420907 未加载
评论 #14421808 未加载
hbcondo714almost 8 years ago
I used to teach this Object-Oriented Analysis and Design (OOAD) course[1] but it&#x27;s still being offered. It runs 10 weeks but is geared towards continuing education students who work full-time.<p>The course website doesn&#x27;t give much details so feel free to view my website[2] that details the course syllabus so you know exactly what you will be learning including UML, GRASP, Design Patterns, OO Metrics and more.<p>[1] <a href="https:&#x2F;&#x2F;ce.uci.edu&#x2F;courses&#x2F;sectiondetail.aspx?year=2017&amp;term=SPRING&amp;sid=00263" rel="nofollow">https:&#x2F;&#x2F;ce.uci.edu&#x2F;courses&#x2F;sectiondetail.aspx?year=2017&amp;term...</a><p>[2] <a href="https:&#x2F;&#x2F;www.amarkota.com&#x2F;portfolio&#x2F;uci" rel="nofollow">https:&#x2F;&#x2F;www.amarkota.com&#x2F;portfolio&#x2F;uci</a>
savethefuturealmost 8 years ago
Jeffery Way has a way with words: <a href="https:&#x2F;&#x2F;laracasts.com&#x2F;series&#x2F;object-oriented-bootcamp-in-php" rel="nofollow">https:&#x2F;&#x2F;laracasts.com&#x2F;series&#x2F;object-oriented-bootcamp-in-php</a>
zer00eyzalmost 8 years ago
OOP in it self isn&#x27;t that hard to wrap your head around.<p>The tough part is the patterns that are used: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Design_Patterns" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Design_Patterns</a><p>Go buy that book and learn to read and understand enough c++ and small talk to read it cover to cover OR find examples in your favorite language.<p>This book is a trap, because it will take you a while to get out of the mindset of being &quot;pattern happy&quot; (maybe). There is plenty of material to follow up with afterwards to learn the downsides of each pattern, and when not to use them.
noblethrasheralmost 8 years ago
If know a language like C++&#x2F;Java&#x2F;C#&#x2F;JavaScript&#x2F;etc, then try building a simple app <i>without</i> using any of the following constructs:<p><pre><code> if, while, for, foreach, do, goto, and switch. </code></pre> Also, don&#x27;t expose any instance variables or use setters, and try to limit the use of assignment statements to constructors only.<p>Implementing something as simple as a FizzBuzz solution under those constraints will be enough to understand OOP.
评论 #14423756 未加载
__striskalmost 8 years ago
From my research so far, here is what I have found...<p>the main topics that one should learn are: * some tidbit of history on why oop * fundamental object oriented concepts: inheritance, encapsulation, and interfaces * network of objects and their restricted interactions<p>* modeling a domain using objects * documenting objects and their interactions * how are objects represented in memory * SOLID principles * solutions (design patterns) to common problems * concurrent design and thread safety in oop designs * tools in oop design (CRC cards, UML, etc.) * actually making projects and laying out the code in an implementation language.<p>Here are some books I seem to like so far.<p>books:<p>Holger Gast - How to Use Objects: Code and Concepts (<a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;gp&#x2F;product&#x2F;0321995546" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;gp&#x2F;product&#x2F;0321995546</a>) This book seems to be what I was looking for. It has an integrated practical approach using the Eclipse source code as examples for various object oriented concepts. I have cross-checked various sources and it seems like this book covers all relevant concepts including SOLID principles.<p>Bertrand Meyer - Object-Oriented Software Construction <a href="https:&#x2F;&#x2F;www.amazon.com&#x2F;Object-Oriented-Software-Construction-Book-CD-ROM&#x2F;dp&#x2F;0136291554" rel="nofollow">https:&#x2F;&#x2F;www.amazon.com&#x2F;Object-Oriented-Software-Construction...</a> This seems to be a great reference. However, I haven&#x27;t looked too thoroughly into it. I found a nice quote though.<p><pre><code> &quot;Today, no one will call security if one of the cocktail guests declares object-oriented tastes. This is the buzzword effect, which has been dubbed mOOzak: the omnipresence, in the computer press, of O-O this and O-O that, causing a general dilution of the concepts. The words flow so continuously from the loudspeakers — object, class, polymorphism... — as to seem familiar, but are the concepts widely understood? Often not.&quot; (29.1) </code></pre> only found one course that I would probably refer to... courses: <a href="https:&#x2F;&#x2F;web.stanford.edu&#x2F;class&#x2F;archive&#x2F;cs&#x2F;cs108&#x2F;cs108.1092" rel="nofollow">https:&#x2F;&#x2F;web.stanford.edu&#x2F;class&#x2F;archive&#x2F;cs&#x2F;cs108&#x2F;cs108.1092</a> This has great course notes and projects to implement using object oriented programming.
rv11almost 8 years ago
If you are ready to pay then go for Pluralsight, it has couple of good courses on OOP.
vram22almost 8 years ago
Bertrand Meyer&#x27;s [1] book, Object-Oriented Software Construction [2], mentioned in another comment here, is good, IMO; some people consider it a classic. I had read large parts of it some years ago. He is the creator of the Eiffel programming language [3], which seem really good (I tried it out, some, using EiffelStudio, his company&#x27;s main product - it also has a GUI libary for creating GUI apps, at least on Windows where I tried it, and can make EXEs, also has a possibly unique notion of freezing and melting, IIRC, related to compilation), though unfortunately Eiffel does not seem to have much adoption (like some other advanced languages).<p>According to the Wikipedia article about him, he also created the idea of Design by Contract [4], involving preconditions, postconditions and invariants, and DbC is built-in to Eiffel. DbC is now supported in many languages or in their libraries.<p>[1] <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Bertrand_Meyer" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Bertrand_Meyer</a><p>[2] <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Object-Oriented_Software_Construction" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Object-Oriented_Software_Const...</a><p>[3] <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Eiffel_(programming_language)" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Eiffel_(programming_language)</a><p>[4] <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Design_by_contract" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Design_by_contract</a><p>Scott Ambler&#x27;s The Object Primer was also good, also read some years ago.<p>IBM developerWorks article by him about the topic: <a href="https:&#x2F;&#x2F;www.ibm.com&#x2F;developerworks&#x2F;library&#x2F;ws-using-oo&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.ibm.com&#x2F;developerworks&#x2F;library&#x2F;ws-using-oo&#x2F;</a><p>The book: <a href="https:&#x2F;&#x2F;www.cambridge.org&#x2F;core&#x2F;books&#x2F;the-object-primer&#x2F;BD0D59A20FFCF1DB1FD2F0E813DC5533" rel="nofollow">https:&#x2F;&#x2F;www.cambridge.org&#x2F;core&#x2F;books&#x2F;the-object-primer&#x2F;BD0D5...</a><p>Just checked, it is still available, though the page at the link below says there is a newer version (linked on same page): <a href="http:&#x2F;&#x2F;www.amazon.in&#x2F;Object-Primer-Application-Developers-Object-Orientation&#x2F;dp&#x2F;0132424967" rel="nofollow">http:&#x2F;&#x2F;www.amazon.in&#x2F;Object-Primer-Application-Developers-Ob...</a><p>Update: Just remembered, when I was checking out Eiffel some years ago, I had read up on success stories about it. One very interesting one was about how HP used it to create a printer driver for a printer, after attempts using another more mainstream language had worked, but the driver had a lot of bugs. IIRC, the article [5] said that with Eiffel, the new version of the driver was created a lot faster, and also had a lot less bugs.<p>[5] Found the article from a Google search:<p><a href="https:&#x2F;&#x2F;archive.eiffel.com&#x2F;eiffel&#x2F;projects&#x2F;hp&#x2F;creel.html" rel="nofollow">https:&#x2F;&#x2F;archive.eiffel.com&#x2F;eiffel&#x2F;projects&#x2F;hp&#x2F;creel.html</a>
anythingbotalmost 8 years ago
SICP