i’m looking for the best (ie. most accessible) resource on OOP. Any suggestions? The less to read, more complete, more accessible, the better. Language-neutral preferred but not required. If it must be “for beginners” or “for non-beginners” than please classify as such. Ideally, it will, of course, be for both.
Didn’t know where else to post this question on this forum. This seemed like the most likely place since Java is OO, BUT as I say, it doesn’t have to be about any 1 language at all, although it may be.
If you’ve used this one resource, and it’s the only one you know, then please think twice before responding. Unless that you are SO CONFIDENT that your recc. is heads and tales better than whatever else is out there.
This is like “what’s the best resource for cars”… OOP is a huge topic, and what you want is not clear, especially since you want something language agnostic… the history of OOP? The theory behind it? Interviews with the creators of early OOP languages? How to develop an OO language? Design patterns in OO software? … I could keep going all day … There’s almost not a book about programming an OO language that doesn’t cover what OO is and the basics of using it; are we to recommend the very best programming book among all programming languages that support object oriented programming?
thanks. yes, I see your point. didnt think about it like that. Design patterns is close, but let’s say someone wants to learn how to practice/execute/“do”/program in an object oriented language for the first time. The best intro resource to it, that (at the same time?) can quickly get them up to speed. OOP in a nutshell. They could then take those concepts and apply them to learning any specific language, so that when learning the language, they aren’t necessarily learning 2 things at once (the language AND the OOP). They are then free to concentrate just on the syntax.
oh come on. Surely there must be something. if not, there should be, but I’m sure there are many examples out there already. An intro to OOP, no? Written with pseudocode, or with some examples in a language, but light enough on syntax so that it doesn’t bog one down? Code there just for illustrative purposes only? A resource that you can read through, understand, and learn from, without the aid of a computer? For end-of-the-day, brain-is-already-tired consumption? Something for my senses that I can take in?
Personally speakig, that’s always been my problem with trying to learn all the new IT things. I just spent the last 10 hours on a computer. I usually fall asleep or otherwise don’t learn much from another 2.
These happen to be in Java. Easy, light reading that I could understand and absorb AWAY from the computer.
Now it just happens that after taking a java course years ago, I already new this stuff, but the emphasis on data encapsulation in this article was a nice addition. So I learned a thing or 2. Of course, I want to ramp it up so that I know all kinds of relevant things about OOP before I step to a computer to use it. My next thought would be to head to webmonkey to see if they have a tutorial on the concepts. It would just be ideal to find a thorough or more complete tutorial. If I have to access the computer to absorb the material, so be it, but it’s better if not.
The problem is there is a lot you must learn before you think about OOP, and then there is a lot that you must learn to pull off to properly program in OOP.
Those articles show you the syntax, but they don’t show you why you have things like methods, how you should design your classes, etc., all important stuff.
If you’re looking at getting into programming in an OOP language, you should slow down and take your time to learn. If you rush, you’ll either wind up picking up bad habits or getting frustrated with your search and give up.
and so on. I don’t know of any online resources that have all this, but just about any computer science text book will have information on it.
Learning computer science is not a quick process. It’s not like learning how to assemble a TV stand. It takes time, patience, and experimentation. Trying to rush things is just going to lead to disappointment.
I’ve been programming most of my life and I’m still constantly learning new things.
believe me, I understand your points, and I hear them.
As you say, any computer text book. Are there some you know of that are better than others, that can be found online?
loops, conditionals, variables, etc…that could all be covered under algorithms in a good algorithms chapter or book, no? (leavig the specific language alone, for the time being)
Not really. Loops, conditionals and variables are implemented differently and are used differently in different languages. If your goal is to learn to program, rather than to write a research paper on compilers, then trying to separate learning the language from learning the tokens of the language is counterproductive.
yes, this is the level of abstraction that I believe I am after. But how about one that is accessible to beginners? This book gets a lot of good reviews, but among the bad reviews are complaints (abeit few) that it’s not for beginners. Nonetheless, this is one book in my shopping cart.
as I say (did I say?) I’m not concerned about syntax so much (or at all), but if it’s written with a real language, then so be it. But it might as well be a language relevant to the web.
However, I’ll repeat my warning: if you aren’t familiar with all those things I listed above classes, you’re heading for trouble. Programming is NOT something you can learn by rushing. I’ve seen many people try and fail… it’s one reason computer science degrees have such high drop-out/major change rates compared to others. It’s hard and you can’t rush.
Do you want to work on legacy software in big business?
Or do you want to work on new software at small to mid sized companies, and do consulting/freelance work?
Java only has a place in the former. It’s the language of the 90s and the enterprise. It’s not what new CS graduates are using, it’s not what startups are using, and with Oracle now in control, it’s not going to be making a comeback. It certainly won’t disappear, but it’s destined to end up much like COBOL today.
If you want to prepare for the future, Python would be a much more appropriate place to start.
Actionscript and C#.NET are also good places as well.
Since you’re talking about languages, maybe I missed my point.
When you learn any programming language, you don’t start with OOP (even in an OOP language). There are other fundamentals you must learn first (which I listed above).
Surely some has written an introduction to Obect Oriented programming!. I started with assembler and learnt a lot from a book on software engineering. Assembler’s are (VERY) procedual and now I would like to progress to OOP in php. I know procedual php well but want to step up to the current methods. Procedrual currently covers all my needs but always looking to expand and improve. Might have a look at Sitepoints new book.
I’m reading Sitepoint’s new PHP Masters which has a very thorough chapter on OOP at the very begnning (chapter 1). It’s for PHP, but the basics of OOP are fairly universal.