Skip to content

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.