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 :

[POO]2 classes mère et une classe fille


Sujet :

C++

  1. #1
    Membre régulier
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2004
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 89
    Points : 106
    Points
    106
    Par défaut [POO]2 classes mère et une classe fille
    Bonjour,

    Je développe une librairie pour la gestion de différents protocoles.
    Pour le moment, la structure est la suivante:

    Une classe mère (que nous appelerons Sock) gère la connexion via socket et toutes les transactions réseaux. Ensuite il y a une classe fille dérivée de cette classe mère pour l'implémentation de différents protocoles, ainsi on retrouvera des fonctions du genre:

    Par contre maintenant je veux aussi ajouter un support SSL/TLS pour les transactions sécurisées (avec OpenSSL). Pour celà j'ai pensé à créer une seconde classe mère (que nous nommerons SockS) qui contient exactement les mêmes fonctions que la classe Sock mais avec une gestion sécurisée à l'intérieur.

    Le problème c'est que pour l'utilisateur, cette gestion doit être totalement transparente..
    Le top serait quelque chose comme avant mais avec par exemple une fonction setSSL() qui redirigerait alors tous les appels des fonctions de Sock vers la seconde classe SockS.

    Le but serait que la classe dérivée soit la même pour les transactions sécurisées ou non, et d'avoir un maximum de transparence pour l'utilisateur. (La redirection serait le top si c'est possible, en tout cas je ne sais pas le faire :s).

    Si quelqu'un a une idée
    Merci.

  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 : 40
    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
    Ca ressemble fort à un design pattern dont je ne me rappelle plus le nom. L'idée ce serait ça (les noms ne sont pas forcément appropriés, j'ai quelques lacunes en réseau ) :

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    class Protocole
    {
    public :
     
        virtual void Write(const std::string& Buffer) = 0;
    };
     
    class ProtocoleBasique : public Protocole
    {
    public :
     
        virtual void Write(const std::string& Buffer)
        {
            Socket.write(Buffer);
        }
    };
     
     
    class ProtocoleSSL : public Protocole
    {
    public :
     
        virtual void Write(const std::string& Buffer)
        {
            OpenSSL.TransactionSecurisee(Buffer);
        }
    };
     
    class Sock
    {
    public :
     
        void Send(const std::string& Buffer)
        {
            if (Protoc )
                Protoc->Write(Buffer);
        }
     
        void SetProtocole(Protocole* P)
        {
            Protoc = P;
        }
     
    private :
     
        Protocole* Protoc ;
    };
     
    Soc Socket;
     
    Socket.SetProtocole(new ProtocoleSSL);
    Si un jour tu veux utiliser un autre protocole, tu n'auras même pas besoin de toucher aux classes existantes.

  3. #3
    Membre régulier
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2004
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 89
    Points : 106
    Points
    106
    Par défaut
    Merci beaucoup c'est exactement ce que je cherchais

    En tout cas la méthode à l'air vraiment puissante o_O
    Et merci pour le code

  4. #4
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 282
    Points : 11 036
    Points
    11 036
    Par défaut
    Pour les DP relatifs au réseau, je ne peux que te conseiller les bouquins et les articles de Smidt qui ont donné ACE.

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

Discussions similaires

  1. conception d'une classe mère et des classe filles
    Par IAGISG dans le forum Diagrammes de Classes
    Réponses: 1
    Dernier message: 19/02/2014, 20h53
  2. Réponses: 7
    Dernier message: 05/04/2011, 18h19
  3. déclarer une classe comme étant une classe fille
    Par dancingmad dans le forum Langage
    Réponses: 9
    Dernier message: 30/07/2009, 10h44
  4. Passage d'une classe mere a une classe fille
    Par khalid_kha dans le forum Langage
    Réponses: 2
    Dernier message: 17/04/2009, 12h52
  5. Réponses: 2
    Dernier message: 02/02/2008, 08h37

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