Depend on behavior, not on data
This is one of the most powerful pieces of advice in OO programming I've ever received.
It means that objects shouldn't be seen just as a collection of data structures. Instead, you should visualize them as software entities that can respond to messages and