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 :

[Deb] Syntax surcharge de methode


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2003
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 491
    Par défaut [Deb] Syntax surcharge de methode
    Bonjour,

    J'ai un probleme car je n'ai pas tout a fait compris quelque chose avec les surcharges de methode.

    J'ai un petit code avec 4 classes une de base abstraite et trois derivees.
    Ces classes contiennent une methode de saisie. qui est chaque fois surchargee.
    Pour suivre le principe de l'heritage chaque classe est plus riche que la precedente.

    Est ce que je dois redonne chaque fois tout le contenu de la methode surchargee ou seulement le complement.

    Voir code ci-dessous

    Ici j'ai la structure de mes classes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    Ici ma classe abstraite avec meth. virtuelle pour saisie
     
    class Option{
     
    private:
    protected:
    float noteFinale;                         //Decl nFin 
    public:
     
           Option(void);                      //construc par def.     
           Option(float);                     //construc avec init. noteFinale           
          ~Option();                          //destruc
     
    virtual void saisieAttr(void)=0;          //Decl methode virtu saisie attribut
          };
     
     
    Ici ma premiere heritiere
     
    class Option1 : public Option{
     
    private:
     
     
    protected:
    float contrCont;                    // Note controle continu
    float noteExa;                      // Note examen
     
    public:      
           Option1(void);               //construc par def.     
           Option1(float cC, float nE); //construc avec init. contrCont et noteExa                
          ~Option1();                    //destruc
     
     
    void saisieAttr(void);               //Decl methode polymorphe saisie attribut      
     
          };
     
    J'en ai egalement une troisieme Option2 avec la meme methode pour saisie d'attribut et un attribut supplementaire pour la classe

    Maintenant mon probleme est de savoir comment je dois formuler la decl de methode. La selection de la bonne instance de classe ne pose pas de probleme.




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Formulation methode de Option1
    //Methode pour saisie des attributs de classe Option1
    void Option1::saisieAttr(void){           
             cout << "Donnez la note de control continu \n"; 
             cin  >> contrCont;
             cout << "Donnez la note d'examen \n"; 
             cin  >> noteExa;
    }
    Ici la formulation pour la methode de Option3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //Methode pour saisie des attributs de classe Option2
    void Option2::saisieAttr(void){           
             cout << "Donnez la note de control continu \n"; 
             cin  >> contrCont;
             cout << "Donnez la note d'examen \n"; 
             cin  >> noteExa;
             cout << "Donnez la note de stage \n"; 
             cin  >> noteStage;
    }
    Ma question est de savoir si je suis oblige de repeter les element deja contenu dans la methode de saisie de Option1?

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Salut

    1/ Dans ce cas il s'agit de redéfinition (ou autre chose pour les pinailleurs), pas de surcharge.

    2/ N'oublie pas de déclarer virtuels les destructeurs des classes employées polymorphiquement.

    3/
    Ma question est de savoir si je suis oblige de repeter les element deja contenu dans la methode de saisie de Option1?
    Tu as alors oublié de préciser une chose importante : est-ce que Option2 hérite de Option1 ?

    J'imagine que c'est le cas, donc tu as le choix entre ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //Methode pour saisie des attributs de classe Option2
    void Option2::saisieAttr(void){           
             Option1::saisieAttr();
             cout << "Donnez la note de stage \n";
             cin  >> noteStage;
    }
    ...Et le pattern template method, qui est toujours meilleur mais à mon avis pas tellement adapté à ta hiérarchie.

  3. #3
    Membre éclairé
    Inscrit en
    Décembre 2003
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 491
    Par défaut
    Tu as bien compris mon probleme malgre mes explications incompletes,
    Option2 herite de Option1 et Option1 herite de Option

    C'est exactement ce qu'il me fallait, je trouvais vraiment lourd de tout reecrire chaque fois et un template ne me parraissait pas etre une solution. Il ne s'agit ici que d'un enrichissement dans une hierarchie de classe et non pas de la reutilisation d'une classe avec plusieurs types de donnees possibles.

    Merci pour la reponse

    Marc_3

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

Discussions similaires

  1. Renseignement sur la syntaxe d'une methode
    Par Dev_info dans le forum Langage
    Réponses: 6
    Dernier message: 25/04/2007, 15h43
  2. Réponses: 5
    Dernier message: 13/02/2007, 08h53
  3. [Deb]Syntax decl d'une const
    Par Marc_3 dans le forum C++
    Réponses: 3
    Dernier message: 03/02/2006, 08h27
  4. Réponses: 14
    Dernier message: 04/12/2005, 08h08
  5. Réponses: 13
    Dernier message: 15/11/2005, 15h47

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