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

Résolu
therainbow3 Messages postés 50 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 25 mai 2010 - 27 mars 2008 à 15:30
therainbow3 Messages postés 50 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 25 mai 2010 - 27 mars 2008 à 16:31
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

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
27 mars 2008 à 15:45
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]
3
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
27 mars 2008 à 16:25
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]
3
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
27 mars 2008 à 15:38
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
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
27 mars 2008 à 15:46
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 ).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
27 mars 2008 à 15:47
oups.. suis un peu en retard on dirait
0
therainbow3 Messages postés 50 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 25 mai 2010
27 mars 2008 à 15:48
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. :)
0
therainbow3 Messages postés 50 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 25 mai 2010
27 mars 2008 à 15:53
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 ]
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
27 mars 2008 à 16:01
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]
0
therainbow3 Messages postés 50 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 25 mai 2010
27 mars 2008 à 16:04
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#. ^^
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
27 mars 2008 à 16:11
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]
0
therainbow3 Messages postés 50 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 25 mai 2010
27 mars 2008 à 16:14
en tout cas c'est gentil de m'aider. :)
J'ai essayé AddRange et j'ai toujours la même erreur. :(
0
therainbow3 Messages postés 50 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 25 mai 2010
27 mars 2008 à 16:31
ça marche impeccablement cette fois.
Merci beaucoup. :)
0
Rejoignez-nous