Most of the popular computer languages these days like Java, C#, C++, Ruby etc. are Object-Oriented. That means you can code a system in terms of Classes and Objects. Classes serve as the blue-prints that define what an object of that class knows, what services it provides and how those services are implemented. Objects are instances of a class that actually do (most of) the real work.
Actually Object-Orientation is a very simple programming paradigm, once you come to grasp it. So it should be really simple to learn and master OOP. However, in reality, things are not that peachy. Unfortunately, most of the widely available so-called 'Object Oriented Analysis And Design' (OOAD) are either utterly useless in understanding it, or make it appear like complicated rocket science through liberal zargon-dropping.
There are honorable exceptions like Bertrand Myer's seminal book 'Object Oriented Software Construction', which IMO is, a must read for every OOP programmer (even if he/she never intends to program in Eiffel, the programming language used in the book).
Given the lack of real good OOP books in main-stream languages (most of them deal more with language features instead of teaching OOP), it's not suprising to see appalling lack of Object orientation, years after OOP has gained popular acceptance. A lot of it has to do with the half-baked truths propogated by the 'Learn X langauge in 10 days' books.
With all due respects, I agree that, these books do help a beginner to learn a new lanaguage's important features quickly. But they also present half-truths as the reasoning behind how certain features are to be used. While an experienced programmer knows well to ignore them, they could be (and are) taken as cardinal truths by newbies.
This misunderstanding of OOP by beginners (as well as some senior) programmers is the cause of plethora of badly-written programs that do not run as intended, crash and cause losses to the customers. DailyWTF (http://thedailywtf.com/) is a great source for these programming gotchas. It's a great forum to read, not to mock at others, but to learn from their mistakes and prevent ourselves commiting those same mistakes under project (deadline) pressure. Or the influence of "star" programmers/designers who believe theirs (only) is the best programming methodology in the whole world, however tedious and silly it might be.
You're right , if you guessed, the Roman Numeral "I" indicates it'll be one long post that'll be broken down into manageable digestible chunks. Having dealt with the reasons behind highly prevalent misunderstaning regarding OO among programmers, future installments will cover the popular misconceptions and try to correct them.
Yours, De-Coded
De-Coded » Object Oriented Madness -II said
[...] My last post dealt with reasons why OOPS is misunderstood by a number of programmers. Having dealt with the cause, lets cover the effects. [...]
Suyog said
Whoa!
Finally you have started blogging! it was long due
– a writer like you cannot be kept silent for long buddy!
Looking forward to more stuff here now!
Suyog
decoded said
Suyog,
Yes. I’ve decided to do something meaningful. Share my coding/design experiences with the others, with the hope that others can benefit, and I will also be able to learn new things and improve myself.
I will be launching another Blog soon (non-coding!), where I intend to post on other aspects of my belief and experiences.
Thanks,
Vivek