Jeff Atwood explains most of the reason behind it. Using OOP for the Hello World applications defeats the purpose. It is important to use real world problems to illustrate the true benefit, and hence the true usage, of OOP.
The other problem is that the class it not about OOP by itself, it is about C++. In my opinion, it is important to separate these two and understand OOP from a language agnostic perspective. And this creates the second hurdle, because students want to jump into programming, they are not patient enough to understand before programming.
Jeff mentions the other problems with OOP too, mostly related to using it for namesake. I think the core problem is the fact that enough time is not given to designing, and OOP is more about design than coding. Taking some time away from the computer to design can help in embracing the less is more paradigm. The other problem, as I had mentioned earlier, is lack of knowledge of the design principles. Reading thoughts of experienced programmer can also help a lot, especially if they are some of the most influential people. Using the invariant philosophy to design classes can result in simple and reusable design. Of course, all this cannot be done at the time of coding, it is important to dedicate time to design.


March 8th, 2007 at 1:19 pm
Like you say: maybe the concept of OOP doesn’t make sense. OOD is what matters.
March 8th, 2007 at 4:44 pm
Rune, it is quite true that the biggest benefit of OO is in the design. However, the concepts do matter a lot, but unfortunately their benefits cannot be justified unless an appropriate example is considered.