I'm stuck constructing a class hierarchy. Say I have classes called `Bullet` and `Mob`. (The names are unimportant; they're just examples.) I can think of two approaches: 1. **Centralised**: Classes are purely a way to store data and nothing else. I could have, for example, `EntityID`, `Velocity`, `HealthPoints`, `NumberOfAttacks` properties. Some other part of the game could then iterate through every instance of every object and update its properties. *Example*: During such an iteration, depending on the type of object (`Bullet` etc.), its movement is handled differently. (`Bullet`s fly forward, `Mob` AI is applied, etc.) 2. **Decentralised**: Each class contains its own properties *and also* all the code for updating its own properties. *Example*: The `Bullet` has some kind of `Update()` method which the game engine calls periodically. This `Update` method would then take it upon itself to calculate a new `Velocity`, update it's position, etc. Are there combinations of these or other alternatives I haven't thought of? Which of these is the more commonly used approach in game programming? What are the benefits or disadvantages of these different methods?