Abstract Data Type vs. Concrete Implementation¶
Separating the logical interface (what operations are supported and their semantics) from physical implementation (how those operations are achieved) enables substitution and independent evolution.
Tension Addressed¶
Generality vs. Specialization
Recognizable As¶
"Stack" as concept vs. array-backed or list-backed stack; "Map" interface with tree or hash implementation; "Priority Queue" as ADT, heap as implementation
Canonical Sources¶
Liskov & Zilles, "Programming with Abstract Data Types" (1974); Parnas, "On the Criteria for Decomposing Systems into Modules" (1972)
Transfers To¶
API Design (contracts vs. implementations), Database Systems (logical vs. physical models), Software Architecture (interface segregation)
This separation is foundational to polymorphism - code depending on the ADT works with any conforming implementation.