It is true that many junior developers write OO code, especially in Java, that has overly long inheritance chains, but junior developers make all kinds of mistakes. This is simply one of them.
Unfortunately I am not talking about the juniors but about the professional OO die hards that are coming with huge class hierarchies with lots of methods to solve simple problems; and then redo everything once in a while to get things 'right'.
Of course I am exaggerating but the OO way of starting to implement something by drafting a class hierarchy with the methods using something like UML is IMHO asking for a project to become unnecessary bloated. I don't have anything against using OO as one of the tools to use during coding; I do have a problem with organizing whole development projects around the OO paradigm.
How does all this pertain to OO? OO is good when used right.
Some tools are easier abused then others; I would claim pure OO is more to the wrong side.
The amount of time saved by using many C++ STL classes for things like vectors, maps and strings over reimplementing the same thing (over and over again) in C is amazing.
IMO the power of C++ STL is the usage of
generic programming and not the fact it is OO; e.g. the clever usage of the C++ templating system. I would claim a lot of code bloat could be avoided and more code could be reused if people would use more generic programming (=templating) and less OO programming (=class hierarchies+methods).
greets,
Staf.