This kind of metaphor is why object systems go so epically wrong. You just want the minimum set of objects that you need to express the problem. In my experience, any attempt to map that to natural language taxonomies leads to a large number of object subtypes that just exist to name things, not DO things.
When dealing with OOP, I stick with patterns and keep everything else as flat as possible.
When dealing with OOP, I stick with patterns and keep everything else as flat as possible.