The Building Blocks of Object Oriented Paradigm
- All data should be hidden within its class.
- Users of a class must be dependent on its public interface, but a class
- should not be dependent on its users.
- Minimize the number of messages in the protocol of a class.
- Implement a minimal public interface that all classes understand [e.g., operations such as copy (deep versus shallow), equality testing, pretty printing, parsing from an ASCII description, etc.].
- Do not put implementation details such as common-code private functions into the public interface of a class.
- Do not clutter the public interface of a class with things that users of that class are not able to use or are not interested in using.
- Classes should only exhibit nil or export coupling with other classes, that is, a class should only use operations in the public interface of another class or have nothing to do with that class.
- A class should capture one and only one key abstraction. Heuristic 2.9 Keep related data and behavior in one place.
- Spin off non-related information into another class (i.e., noncommunicating behavior).
- Be sure the abstractions that you model are classes and not simply the roles objects play.