in reply to
Often Overlooked OO Programming Guidelines
If I might add one more observation: Don't think about classes (at all)
when doing domain modelling! Classes are a structural element of the code
not an element of the problem domain. Just think about the objects (what
they need to do, what they need to know). Thinking 'classes' too early
subverts object-oriented design into class-oriented design, and the result
is highly stuctured code (often with deep hierarchies) that doesn't map
well to the problem space.