Bonjour...
J'ai un soucis d'appel de fonctions.
J'ai une interface IShapeBase comprenant 2 autres : IShape, IDraw.
Je créé ma classe de base comme suit (avec pleins de choses à initialiser) :
ex : public class ShapeBase : IShapeBase.
Je créé d'autres classes dérivées de ShapeBase (donc un peu plus spécifique):
ex :Je pourrais très bien construire mes 2 classes sans passer par ShapeBase mais uniquement IShapeBase, mais je ne veux re-écrire plusieurs fois le même code d'initialisation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 public class ShapeCercle : ShapeBase public class ShapeLigne : ShapeBase
J'arrive à créer plusieurs objets de classes ShapeCercle et ShapeLigne.
Je range le tout dans une liste List<IShapeBase> mListe...
Plus tard, dans mon code, je fait appel à une fonction Draw() issue de IDraw.
Cette fonction Draw est overridée dans ShapeCercle et ShapeLigne. Aussi, dans ShapeBase, Draw() est vide...
Lors de l'exécution, je dois dessiner certains objets et je fais de la façon suivante (je sais, il y a d'autres façons de faire mais j'aime celle-là...):
Dans ma cervelle, lors de cet appel mListe[c].Draw(), ce Draw()doit se reporter au Draw()de la classe enregistrée dans mListe et me dessiner l'objet en question
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for (int c = 0; c < mListe.Count;c++) { mListe[c].Draw(); }
Par ex ici :
Or mListe[c].Draw()va voir Papa (ou Maman), c'est-à dire ShapeBase.Draw()qui se trouve être vide...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 mListe[0].Draw() -> ShapeCercle.Draw() mListe[1].Draw() -> ShapeLigne.Draw()
Quel est le moyen pour arriver au résultat souhaité ?
Merci d'avance et bonne journée...
Partager