If you're not a software person this probably won't apply to you.....A flexible object-oriented design exhibits several properties.
- High cohesion
The degree to which a class does just one kind of thing. Strive for high cohesion -- small classes that do just one kind of thing.
- Low coupling
Coupling involves what a class knows about the world beyond it. Strive for low coupling -- classes and objects that know as little as possible about other classes and objects.
- An even distribution of behavior
This is the degree to which an object "does things for itself." Strive to keep state and behavior together in an object. Strive to avoid "controller objects" that control other objects.
- Strong modularity
This is the degree to which "like things" are grouped. Strive to group objects into meaningful packages, subsystems, processes, etc.