snippets from Object-Oriented Thought Process (1)
Perhaps the most important issue when designing a class is identifying the audience, or users, of the class. for the interface to a class should contain only what the user needs to know.
One goal regarding the implementation should be kept in mind: A change to the implementation should not require a change to the user's code.
When designing a class, the rule of thumb is to always provide the user with as little knowledge of the inner workings of the class as possible. To accomplish this, follow these simple rules:
1.Give the users only what they absolutely need. In effect, this means the class has as few interfaces as possible. When you start designing a class, start with a minimal interface.
2.Public interfaces are all the users will ever see. You should initially hide the entire class from the user.
3.It is vital to design classes from a user's perspective and not from an information systems viewpoint. Too often designers of classes (not to mention any other kind of software) design the class to make it fit into a specific technological model. Even if the designer takes a user's perspective, it is still probably a technician user's perspective, and the class is designed with an eye on getting it to work from a technology standpoint, and not from ease of use for the user.(Important!)
4.Users are the ones who will actually use the software.