Object Oriented Design: ideas
Always assume that an object has no insight into the
internal structure of another object
Play close attention to this!
All activities on objects other than itself must be
achieved by performing an operation, not by direct
manipulation of the internal data
Always ask yourself “how can an object of this class
carry out an operation on another class’ data?
This is a hard question – especially since you may not
be aware at the design phase of all of the
implementation details