Enforcing the Separation of Data Use and Representation

The only communication between the high-level application and the low-level data representation is through the constructor and selectors: