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 :

Problème de design


Sujet :

C++

  1. #1
    b4u
    b4u est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 87
    Points : 64
    Points
    64
    Par défaut Problème de design
    Salut,
    j'ai une classe abstraite A qui comporte une méthode virtuelle, disons,
    virtual void action() = 0;. Pour que le comportement de cette méthode soit cohérent, il faudrait que l'utilisateur manipulant une dérivée de A appelle obligatoirement une fonction init() avant de faire appel à action(). Il y a moyen de d'interfacer A de telle façon que l'appel à init() soit transparent pour le client qui redéfinit action()?

  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 : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Oui, ça s'appelle le design pattern template method.

    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
    class A
    {
    public :
     
        void action()
        {
            init();
            do_action();
        }
     
    private :
     
        virtual void do_action() = 0;
    };
     
    class B : public A
    {
    private :
     
        virtual void do_action()
        {
            // ...
        }
    };

  3. #3
    b4u
    b4u est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 87
    Points : 64
    Points
    64
    Par défaut
    c'est bien ce que je pensais faire, ca me semblait juste un peu bizarre d'avoir une virtuelle pure privée
    merci encore !

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par b4u
    c'est bien ce que je pensais faire, ca me semblait juste un peu bizarre d'avoir une virtuelle pure privée
    C'est pourtant le cas de la majorité des fonctions virtuelles chez moi...

    http://www.gotw.ca/publications/mill18.htm
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    b4u
    b4u est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 87
    Points : 64
    Points
    64
    Par défaut
    Je débute en POO et intuitivement, je pensais que l'encapsulation servait notamment à pouvoir documenter uniquement la partie publique d'une classe (et ainsi à cacher au client ce qui est privé). En fait je n'avais pas prévu ce cas de figure, qui doit être assez commun après tout.
    Merci pour le lien au passage

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

Discussions similaires

  1. Problème de design/mise en page auto
    Par zax-tfh dans le forum Silverlight
    Réponses: 2
    Dernier message: 08/02/2010, 23h01
  2. problème éditeur design Visual studio
    Par xx_FiFty_xx dans le forum Windows Forms
    Réponses: 3
    Dernier message: 10/06/2008, 13h21
  3. problème mode design Asp.net[2.0]
    Par dev-man dans le forum ASP.NET
    Réponses: 6
    Dernier message: 07/02/2007, 14h05
  4. [GRIDBAGLAYOUT] problème entre design et execution
    Par Lambrosx dans le forum NetBeans
    Réponses: 5
    Dernier message: 04/12/2006, 15h35
  5. Problème de design !
    Par franck.thibault dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 25/08/2006, 14h23

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