The all-out solution would be to have a Tail class with subclasses CroppedTail and UncroppedTail, then have a Tail property on the dog. Much better than subclassing the whole dog, and allows you to optionally crop the tail of a dog dynamically (if the Tail property is settable).
Of course this is a silly example, but in the kind of realistic cases that probably underlie your question, I find that there is often an aspect that is natural to factor out in a separate class.
|