And if we choose the latter one, we use the Object-Oriented method. The function-based method is unsatisfactory because of different reasons. It does not take account of extendibility. It seems impossible to ensure that system evolution will be as smooth as the evolution of requirements. Each module in the system is built for performing a special action on some specified data, therefore it is difficult to use the module elsewhere in the system.
Explicit reference causes difficulty to access.
It does not promote reusability. It is often that we must change some modules in the system. To make a change, every program that uses these modules must be rewritten. It is difficult to maintain the system. Every data structure must be attached to one or more functions.