The idea of data abstractions here is that we don't think of the couple data abstraction as a list with two elements, but rather simply as the descriptors
This is similar to real life where you don't think of driving a car as all its individual parts, but just as a large abstraction
Data abstractions effectively hide the implementation from users - all people need to use are the constructors and selectors
Violating Data Abstraction Barriers
One thing you cannot do when it comes to data abstractions is violate the data abstraction barriers.
This basically means that you must use the constructors and selectors when dealing with data abstractions
This is because you do not necessarily know how the data abstractions are implemented