abstraction
termprogramming
Hiding how something works behind what it does, so callers depend on an interface rather than on an implementation.
It is the only technique that makes large systems buildable, and it always leaks. Barbara Liskov's work is the rigorous version: a subtype must be usable wherever its supertype is, without the caller needing to know the difference - a statement about interfaces rather than inheritance. The operational corollary is worth stating too. Every abstraction has a failure mode that shows through: the network that pretends to be a local call still has latency, and the storage that pretends to be infinite still has a bill.
Also known as: data abstraction, encapsulation