The concept of encapsulation means that an object contains both the data structure and
the set of operations that can be used to manipulate it. The concept of information hiding
means that we separate the external aspects of an object from its internal details, which are
hidden from the outside world. In this way the internal details of an object can be changed
without affecting the applications that use it, provided the external details remain the same.
This prevents an application becoming so interdependent that a small change has enormous
ripple effects. In other words information hiding provides a form of data independence.