creating a data type that hides the details of the data representation
representing or storing information with methods that separate layers of concerns so that the programmer can work with information while ignoring lower-level details about how the information is represented.
focusing on important details and characteristics and filtering out the unwanted details or explanations. a means of separating behavior from implementation.