abstract data types implementationallowing us to focus on the use of the new data type instead of how it' implemented this separation is typically enforced by requiring interaction with the abstract data type through an interface or defined set of operations this is known as information hiding by hiding the implementation details and requiring adts to be accessed through an interfacewe can work with an abstraction and focus on what functionality the adt provides instead of how that functionality is implemented abstract data types can be viewed like black boxes as illustrated in figure user programs interact with instances of the adt by invoking one of the several operations defined by its interface the set of operations can be grouped into four categoriesconstructorscreate and initialize new instances of the adt accessorsreturn data contained in an instance without modifying it mutatorsmodify the contents of an adt instance iteratorsprocess individual data components sequentially user programs interact with adts through their interface or set of operations user user program program string adt str(upper(the implementation details are hidden as if inside black box lower(figure separating the adt definition from its implementation the implementation of the various operations are hidden inside the black boxthe contents of which we do not have to know in order to utilize the adt there are several advantages of working with abstract data types and focusing on the "whatinstead of the "how we can focus on solving the problem at hand instead of getting bogged down in the implementation details for examplesuppose we need to extract collection of values from file on disk and store them for later use in our program if we focus on the implementation detailsthen we have to worry about what type of storage structure to usehow it should be usedand whether it is the most efficient choice we can reduce logical errors that can occur from accidental misuse of storage structures and data types by preventing direct access to the implementation if we used list to store the collection of values in the previous examplethere is the opportunity to accidentally modify its contents in part of our code