I cannot recall where I read, but I liked it much. It was to explain the merit of OO approach. The gist of it was something like this: In the traditional approach (read ‘functional’), the solution to a given problem is figured out and coded. The OO approach tries to model the problem domain directly and the solution flows out of it. Thus there is a greater alignment between the problem stated and the software designed and coded. The software is able to follow the changes in the problem statement more easily and elegantly. This is an important demand on any software development paradigm since changing requirements is the norm in today’s times.
Of course, the mere OO approach does not guarantee this alignment automatically. How does one do a good job of it so that the promise of OO approach is actually delivered where the rubber meets the road? Are there cook-book prescriptions to follow? Presently, the answer is at best a set of guidelines and self-checks and some measures. I will bring up some pieces of it for closer look, going forward.