"Parent class" and "Child class" are really bad terms. The best way to think about it, imho, is in terms of generalized vs. specialized. A "child class" is the specialization of the "parent class". You don't create a massive OO system for only one set of behaviors. You create it when you have several sets of behaviors that share a lot of common behaviors. The generalized case (parent class) provides the common behaviors. Then, each set of behaviors adds its own bits in a specialized case (child class).
What you're talking about regarding ThisFeature vs. ThatFeature sounds more like roles, honestly. Read ALL the documentation for Moose. That will probably help a lot. Oh, and when you decide to build a big OO system, use Moose. It will save you a lot of heartache.
My criteria for good software:
- Does it work?
- Can someone else come in, make a change, and be reasonably certain no bugs were introduced?