Abstract Data Type

An Abstract-Data-Type (ADT) is a mathematical model for data types where a type is defined by its behavior (semantics) from the point of view of a user of the data, specifically in terms of possible values, possible operations on data of this type, and the behavior of these operations. In Computer-Science, this serves as a theoretical foundation for separating the logical properties of data from their physical implementation. This distinction is crucial in Software-Engineering for managing complexity.

Unlike a concrete Data-Structure, which defines how data is stored and manipulated in memory, an ADT focuses on what the data represents and what can be done with it. This concept is a cornerstone of Object-Oriented-Programming, where it is often realized through the use of classes and interfaces to achieve Encapsulation. By hiding the implementation details, developers can change the underlying logic without affecting the external systems that interact with the ADT.

Common examples of ADTs include the Stack, Queue, List, and Map. For example, a Stack is defined by its LIFO (Last-In, First-Out) property and operations like push and pop. Formal definitions often use algebraic specifications to describe these behaviors, as noted in resources like Wikipedia and the NIST Dictionary of Algorithms and Data Structures.