Salut à tous,
Voici un petit problème qui me tracasse depuis quelques jours.
J'ai (notemment) deux classes : Species et Individual. Je m'interesse à la relation entre les deux. Jusqu'à maintenant j'étais parti sur une agrégation (un individu faisant parti d'une espece). Les individus de la même espece étaient donc stockés dans une liste chainées avec un pointeur sur le premier element dans la classe Species. Cela fonctionnait parfaitement jusqu'au moment où j'ai eut à manipuler les individus indépendemment de leur classe.
Arrive le moment où j'ai besoin de savoir à quelle espece appartient tel individu...
Seulement une agrégation ne permet pas de "remonter". J'ai donc voulu stocker dans Individual un pointeur vers l'espece à laquel il appartient. Mais cela représente une sorte d'agrégation à double sens, et forcement ça ne compile pas :aie:
J'ai donc deux solutions sous la main. Mais avant d'aller plus loin je voudrai l'avis de personnes plus expérimentées que moi !
- La méthode bourrine : Je stocke (lors de sa création) une chaine de caractère dans individus correspondant au nom de l'espece à laquelle il appartient. Etant donné que l'un des attribus de Species est son nom, il ne me reste plus qu'à faire des strcmp() pour retrouver celle qui correspond. Ca me parait quelque peu "crado" quand même...
- L'héritage. Je me pose de plus en plus de question sur l'héritage ici. D'un point de vue de code pur, si je ne me trompe pas l'héritage me permetrai de "remonter" et ainsi partant d'un pointeur sur un individu, je devrai pouvoir retrouver à quelle espece il appartient. Seulement est-ce bien approprié ? Un individu n'est pas une espece. (par contre une instance d'individu est bien une instance d'espece : Snoopy est bien un chien). Est ce que cela ne risque pas de me jouer des tours soit dans l'implementation de l'héritage en lui-même, soit par la suite ?
Voilà, je suis un peu perdu là... Tout conseil est le bienvenu !
D'avance, grand merci ;)