Are these C++ questions (*looks at icon*)?
I say make object components seperate in order to be flexible, (though not too seperate- As long as its still efficient).
For example, you could have a sprite, a timing/frame value object, and then have another object which encapsulates both of them together, in interaction.
What do you mean about Melee weapons? Seperate from the main sprite? (Yes) Seperate objects from other types of objects? (Yes and no: Polymorphism).