There are two views of encapsulation: the object-oriented programming language
(OOPL) view and the database adaptation of that view. In some OOPLs encapsulation is
achieved through Abstract Data Types (ADTs). In this view an object has an interface
part and an implementation part. The interface provides a specification of the operations
that can be performed on the object; the implementation part consists of the data structure
for the ADT and the functions that realize the interface. Only the interface part is visible to other objects or users. In the database view, proper encapsulation is achieved by ensuring that programmers have access only to the interface part. In this way encapsulation provides a form of logical data independence: we can change the internal implementation of an ADT without changing any of the applications using that ADT (Atkinson et al., 1989).