Encapsulation
An object should be self-governing; any changes to the object's state (its variables) should be accomplished by that object's methods
We should make it difficult, if not impossible, for another object to "reach in" and alter an object's state
The user, or client, of an object can request its services, but it should not have to be aware of how those services are accomplished