16-03-2009, 11:16 AM
l'abstraction c'est bien en théorie, mais bon faudrait pas pousser le vice trop loin; pendant qu'on y est pourquoi ne pas faire une classe abstraite objet dont hériterait tous les éléments de ton programme; et ainsi pouvoir tout stocker dans une seule table ^^ ok->[porte].
plus sérieusement je rejoints naholyr/mycroft. C'est pas juste le fait d'avoir des attributs différents qui jouent réellement; c'est leur nombre & type.
ex:
- un consommable avec nombre de charge restante + nombre de charge max
- un bouclier avec nombre de pv courant + nombre de pv max
- un livre avec un nombre de pages et rien (ou p-e un numéro de tome; ou un id_text_du_livre)
- ...
si tu te retrouve en fait avec des objets structurellement équivalent ou en tout cas très proche (à chaque fois tu as par exemple 2 entiers qui représentent des attributs propre au type d'objets); la structure de stockage en bdd sera identique; donc stocker dans une même table ne pose pas de problème.
Une petite adaptation sur tes méthodes de stockage et récupération de l'inventaire devrait résoudre ça.
si c'est pas le cas; difficile d'éviter d'avoir plusieurs table pour chaque sous-classe à moins qu'il s'agit juste de stockage brut, dans ce cas un blob (ou autre) pour stocker les données propre à chaque type d'objets; c'est pas très élégants et je serais pas très emballé par l'idée; mais faut savoir si tu fais que stocker en bdd ou si tu vas traiter les données en bdd.
plus sérieusement je rejoints naholyr/mycroft. C'est pas juste le fait d'avoir des attributs différents qui jouent réellement; c'est leur nombre & type.
ex:
- un consommable avec nombre de charge restante + nombre de charge max
- un bouclier avec nombre de pv courant + nombre de pv max
- un livre avec un nombre de pages et rien (ou p-e un numéro de tome; ou un id_text_du_livre)
- ...
si tu te retrouve en fait avec des objets structurellement équivalent ou en tout cas très proche (à chaque fois tu as par exemple 2 entiers qui représentent des attributs propre au type d'objets); la structure de stockage en bdd sera identique; donc stocker dans une même table ne pose pas de problème.
Une petite adaptation sur tes méthodes de stockage et récupération de l'inventaire devrait résoudre ça.
si c'est pas le cas; difficile d'éviter d'avoir plusieurs table pour chaque sous-classe à moins qu'il s'agit juste de stockage brut, dans ce cas un blob (ou autre) pour stocker les données propre à chaque type d'objets; c'est pas très élégants et je serais pas très emballé par l'idée; mais faut savoir si tu fais que stocker en bdd ou si tu vas traiter les données en bdd.