| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 
 |  
class Resource : public SmartData
{
protected:
   virtual  void load(inputstream is)
   {
        /* ici on va 'charger' le renderable. Donc: lire la classe, instancier un objet de cette classe là, et 'charger' le renderable a partir d'autre resources. */
   }
};
 
class Object : public Resource
{
private:
 
public:
   /* n'importe quoi nécessaire à la gestion des objets, genre getId(), ... */
 
protected:
   virtual  void loadState(inputstream id)
   {
        /* ici on récupère d'un save-game l'état de l'objet au moment du save. */
   }
 
   virtual  void saveState(outputstream id)
   {
        /* ici on serialise l'état de l'objet. */
   }
};
 
 
class ObjectBehavior : public Resource
{
    /* histoire de récupérer un objet à partir du behavior. */
    Object*   getObject();
};
 
class PhysicalBehavior : public ObjectBehavior
{
    /* abstraction du moteur physique. permet aussi de récupérer la position/vitesse de l'objet à tout moment. */
    WorldPosition    getPosition();
    WorldSpeed      getSpeed();
};
 
class RenderingBehavior : public ObjectBehavior
{
    /* abstraction du moteur graphique. permet aussi de dessiner l'objet (méthode "Draw()"). */
     void    Draw();
};
... |