One object doesn't do everything. Makes it easier to reuse, easier to develop and manage. Minimize assumptions of language or system. Try to describe the world , not a program. Define objects not functions or managers.
Objects are nouns .
Don't include things you don't need, even if it is part of the real world. Sure, everything is made up of molecules, but you probably don't need a molecules class. Good hierarchy is always linked by IsA relationships. Attributes and services should be factored out as high in the hierarchy as possible. It should be easy to add on to, and thus reusable.