[oop] encapsulation vs abstraction real world example