type's internal form is hidden behind a set of
accessfunctions. Values of the type are created and inspected only
by calls to the access functions. This allows the
implementation of the type to be changed without requiring any
changes outside the
module in which it is defined.
Objects and ADTs are both forms of data abstraction, but
objects are not ADTs. Objects use procedural abstraction
(methods), not type abstraction.
A classic example of an ADT is a
stack data type for which
functions might be provided to create an empty stack, to
push values onto a stack and to
pop values from a stack.
(2003-07-03)