IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C#] Tableau dynamique d'objets


Sujet :

C#

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut [C#] Tableau dynamique d'objets
    J'ai une classe : arbre et plusieurs classes filles : sapin, epicea, chene, ...., chaque classe fille ayant des méthodes spécifiques.
    Je voudrai faire un tableau dynamique (dont le nombre d'éléments est inconnu au départ, susceptible d'évoluer) qui s'appelerait foret et qui pourrait contenir des arbres de toutes natures et pour lesquelles je pourrai appeler chaque méthode spécifique. Apres lecture des plusieurs tutoriaux la solution qui me semblait adéquate est :
    List<arbre> foret = new List<arbre>();
    foret.add(sapin);
    Or je voudrai maintenant accéder aux propriétés spécifiques de la classe sapin. Faire foret[elementvoulu].methodespecifique me renvoie des erreurs. Comment faire ? Est ce que je m'y prend mal ? Merci.

  2. #2
    Nouveau membre du Club
    Profil pro
    Directeur développement logiciel
    Inscrit en
    Décembre 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Directeur développement logiciel

    Informations forums :
    Inscription : Décembre 2009
    Messages : 22
    Points : 33
    Points
    33
    Par défaut
    Je trouve dommage d'utiliser des propriétés spécifiques dans ta structure objet. Tu devrais utiliser une méthode commune à tous, dont le fonctionnement spécifique est défini à l'intérieur, l'appelant n'ayant aucune notion de ce qu'il y a derrière.

    Mais bon, pour revenir à ton souci :
    foret[elementvoulu].methodespecifique
    si foret[elementvoulu] est un sapin, et que methodespecifique est une méthode spécifique de sapin, cela ne fonctionnera pas car foret est une liste d'arbres, donc foret[elementvoulu] renvoie un objet qui sera considéré comme étant un arbre, avec les fonctions de arbre.
    Si tu veux que ça fonctionne, il faut caster l'élément :
    ((sapin) foret[elementvoulu]).methodespecifique
    Mais il faut sur que le cast est correct.

    Et pour en revenir à ma remarque du début, Le mieux serait de faire une méthode FonctionneSpecifique() dans arbre qui ne fait rien dans arbre, mais que tu overrides dans sapin pour quel fasse quelque chose. Et là ton foret[elementvoulu].FonctionneSpecifique() fonctionnera dans tout les cas.

    J'espère avoir été clair.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci pour ta réponse claire je vais faire comme t'as dit

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Dojo] objet tableau dynamique YUI
    Par MinaSenegal dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 22/04/2009, 23h47
  2. Problème de tableau dynamique d'objets
    Par markfish55 dans le forum C++
    Réponses: 2
    Dernier message: 07/06/2008, 13h07
  3. Transmission de tableau dynamique d'objets
    Par laulaurent dans le forum C++
    Réponses: 7
    Dernier message: 17/11/2007, 22h59
  4. Réponses: 11
    Dernier message: 26/09/2007, 21h24
  5. tableau dynamique d'objets
    Par logarithme1984 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/03/2007, 13h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo