In computer programming, an abstraction that handles complex tasks while hiding that complexity to present a simple interface