1) if I have a private reference to an object and I provide a get method which returns it, does it break the encapsulation of the class since the client of the class can now obtain a reference to a private member object and change it?
2) If the above answer is yes, I suppose the solution would be to clone the object when it is set and return another clone when it is get? Wouldn't that be very inefficient?

