Problème d'héritage [C#]

Résolu
Signaler
Messages postés
50
Date d'inscription
vendredi 14 mars 2008
Statut
Membre
Dernière intervention
25 mai 2010
-
Messages postés
50
Date d'inscription
vendredi 14 mars 2008
Statut
Membre
Dernière intervention
25 mai 2010
-
Bonjour,

J'ai créé une classe Page dont le constructeur est le suivant:

public Page(String titre)
        {
            this.titre = titre;

            ArrayList Textes = new ArrayList();
            ArrayList Images = new ArrayList();
        }

et j'ai créé une classe Entreprise qui hérite de la classe Page. Voici le constructeur:


Entreprise()

            : base("Qui sommes nous")

        {

           

            Textes.add(premiere_presentation_entreprise_50mots, seconde_presentation_entrepris_25mots, troisieme_presentation_entreprise_45mots);

            Images.add(premiere_photo_entreprise_445_277, deuxieme_photo_entreprise_100_67, troisieme_photo_entreprise_100_98);

        }

 J'aimerais utiliser les ArrayList qui figurent dans le constructeur de Page dans le cosntructeur de ma classe Entreprise mais lorsque j'essaye d'y ajouter des string pour créer la collection il ne sait pas à quoi correspond Textes ou Images.  Est-ce que quelqu'un saurait m'aider?
Merci d'avance.

12 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
14 février 2014
38
il faut que tu fasses comme ceci :

public class Page {
   private ArrayList titres;
   private ArrayList images;
   private string titre;

   public Page(string titre) {
      titres = new ArrayList();
      images = new ArrayList();
   }
}

et :

public class Entreprise : Page {
   public Entreprise() : base("Qui sommes nous ?") {
      base.Add(premiere_presentation_entreprise_50mots, seconde_presentation_entrepris_25mots, troisieme_presentation_entreprise_45mots);
      base.Add(premiere_photo_entreprise_445_277, deuxieme_photo_entreprise_100_67, troisieme_photo_entreprise_100_98);
   }
}

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
14 février 2014
38
normal... il faut juste changer un peu la syntaxe :

public class Entreprise : Page {
   public Entreprise() : base("Qui sommes nous ?") {
      base.titres.Add( new object[] { premiere_presentation_entreprise_50mots, seconde_presentation_entrepris_25mots, troisieme_presentation_entreprise_45mots});
      base.images.Add( new object[] { premiere_photo_entreprise_445_277, deuxieme_photo_entreprise_100_67, troisieme_photo_entreprise_100_98 });
   }
}

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
28
Bonjour,

Il me semble (ou je ne m'y connais pas), que tu n'as pas d'autre choix que de mettre les variables Textes et Images en tant que variable de la classe Page.
Après, à toi de voir:
- soit tu les met en private et tu créé des accesseurs get-set dessus
- soit tu les met en protected et tu y auras accès dans les classes héritant de celle-ci.

Voila,

Bonne journée,

Billou_13
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
Salut, tu fais une grave erreur, tu déclares les ArrayList dans ton constructeur, arrivé à la fin du constructeur le garbage collector comprend que tes ArrayList ne peuvent plus être utilisés ailleurs, il les marque donc comme "à supprimer". Déclare les protected en champs de la classe et initialise les dans le constructeur ( ou pas ).
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
oups.. suis un peu en retard on dirait
Messages postés
50
Date d'inscription
vendredi 14 mars 2008
Statut
Membre
Dernière intervention
25 mai 2010

En effet ça marche si je les met en variable de la classe Page mais j'aimerais si possible les garder dans mon constructeur Page. Je ne trouve pas de solutions mais ça m'arrangerait vraiment parce que je vais devoir utiliser ces ArrayList dans plusieurs classes.

Merci quand même. :)
Messages postés
50
Date d'inscription
vendredi 14 mars 2008
Statut
Membre
Dernière intervention
25 mai 2010

Ah j'avais pas vu ta réponse sebmafate ça semble marcher seulement il ne reconnaît pas base.Add(...) dans la classe Entreprise[auteur/SEBMAFATE/53675.aspx ]
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
14 février 2014
38
ooops... en effet ce n'est pas base.Add mais :

base.titres.Add et base.images.Add

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
50
Date d'inscription
vendredi 14 mars 2008
Statut
Membre
Dernière intervention
25 mai 2010

oui c'est bon j'avais arrangé ça ;) par contre il me trouve deux erreurs en rapport avec les add il me dit : aucune surcharge pour la méthode 'Add' ne prend d'arguments '3'. je dois avouer que j'ai dû mal à comprendre. Je débute en c#. ^^
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
14 février 2014
38
oui... j'ai zappé ça aussi... ça m'apprendra à faire du copier/coller :

il faut utiliser AddRange

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
50
Date d'inscription
vendredi 14 mars 2008
Statut
Membre
Dernière intervention
25 mai 2010

en tout cas c'est gentil de m'aider. :)
J'ai essayé AddRange et j'ai toujours la même erreur. :(
Messages postés
50
Date d'inscription
vendredi 14 mars 2008
Statut
Membre
Dernière intervention
25 mai 2010

ça marche impeccablement cette fois.
Merci beaucoup. :)