data hiding vs encapsulation