Since these messages are tightly coupled with the objects themselves, knowledge of their internals is not only unneeded but is also greatly discouraged. Whenever a group or business makes such a significant change in the way it operates, there is an inevitable cost involved. Change involves costs in productivity, money, time, and, if not handled properly, quality. To be successful, there have got to be some major benefits to offset these costs. The object model encourages the reuse of not only software but also entire designs.
Object oriented systems are often smaller than their equivalent non-object oriented implementations.
This means less code to write and maintain and greater reuse of software which translates into cost and schedule benefits. The use of the object model produces systems that are built upon stable intermediate forms, and thus are more resilient to change. This also means that such systems can be allowed to evolve over time, rather than be abandoned or completely redesigned in response to the first major change in requirements. The object model reduces the risk of developing complex systems, primarily because integration is spread out across the life cycle rather than occurring as one big bang event. By easily dividing a large complex system into several smaller simple pieces, the confidence in the correctness of the design is dramatically increased.