Abstract data type
<programming> (ADT) A kind of
data abstraction where a type's internal form is hidden behind a set of access functions.
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.
Reynolds paper (http://www.cis.upenn.edu/~gunter/publications/documents/taoop94.html).
Cook paper "OOP vs ADTs" (http://www.wcook.org/papers/OOPvsADT/CookOOPvsADT90.pdf).