Discussion:
Problème de modélisation
(trop ancien pour répondre)
No_Name
2009-01-26 15:56:21 UTC
Permalink
Bonjour,

Je travaille sur une application en C++ pour laquelle j'ai plusieurs
niveaux d'héritage :

A = Classe mère
Classe B = Hérite de A
Classe C = Hérite de B

Je voudrais pouvoir facilement transformer des objets de type B en
objets de type C et inversément.

Pour passer de C à B, j'imagine qu'un simple cast suffira, sachant
qu'en faisant cela, je perdrai les données qui font la sécificité de C
(puisque le but est de me retrouver avec un objet de type B).

Par contre, je ne vois pas bien comment je peux passer de B à C ?
J'envisageais de doter la classe C d'une fonction permettant de créer
un objet de type C à partir d'un objet de type B, en initialisant les
données supplémentaires à des valeurs par défaut, mais je ne suis pas
complètement sur de cette solution.

Et les fonctions de création d'un objet de type B en objet de type C
doivent elle effectivement être des méthodes de la classe C ?

Merci de vos conseils et suggestions.
Seb. L.
2009-01-30 07:35:13 UTC
Permalink
Post by No_Name
Bonjour,
Je travaille sur une application en C++ pour laquelle j'ai plusieurs
A = Classe mère
Classe B = Hérite de A
Classe C = Hérite de B
Je voudrais pouvoir facilement transformer des objets de type B en
objets de type C et inversément.
Pour passer de C à B, j'imagine qu'un simple cast suffira, sachant qu'en
faisant cela, je perdrai les données qui font la sécificité de C
(puisque le but est de me retrouver avec un objet de type B).
Par contre, je ne vois pas bien comment je peux passer de B à C ?
J'envisageais de doter la classe C d'une fonction permettant de créer un
objet de type C à partir d'un objet de type B, en initialisant les
données supplémentaires à des valeurs par défaut, mais je ne suis pas
complètement sur de cette solution.
Et les fonctions de création d'un objet de type B en objet de type C
doivent elle effectivement être des méthodes de la classe C ?
Merci de vos conseils et suggestions.
Bonjour,

Ce genre de question revient souvent et ton raisonnement est le bon.
Tu peux passer de C à B en perdant la spécificité de C et tu dois avoir
une méthode qui génère un objet C à partir d'un objet B. Je suis aussi
d'accord avec toi quand tu dis que cette méthode (un constructeur en
fait) doit appartenir à C. En effet à part C qui connait les
spécificités de C ?

Seb.

Loading...