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 :

Petit problème d'héritage.


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 74
    Par défaut Petit problème d'héritage.
    Bonjour,

    J'ai une fenêtre avec un bouton, qui quand j'appuis dessus se connecte a la base de données, si la connection est ok, j'affiche donc l'autre fenêtre sinon nan.
    Si ok, une nouvelle fene^tre s'affiche et me propose 2 choix, ajouter un champ ou en supprimer un de la base de données via 2 boutons qui eux-même vont donner 2 fenêtres, pour les 2 choix.

    Pour l'ajout et la suppresion, il faut donc que je soit connecter a la base de données. Il faut donc que je récupère la conenction qui s'est faite das la première fenêtre, ses attributs etc...

    Pour cela, je vais utiliser l'héritage, mais je ne vois pas trop comment faire.
    Car, dans les 2 autres fenêtres, les méthodes sont ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void SupprimerDlg::OnBnClickedOk()
    Donc, comment faire pour que dans les 2 autres fenêtres, je puisse utiliser un attribut que je déclare dans le fichier header de la première fenêtre ?

    Merci d'avance pour votre aide.

  2. #2
    Membre éclairé
    Avatar de Kalite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut
    Pour faire simple:
    Je te conseil plustôt une composition avec un objet gérant les accès à ta base de données. Te le passe de fenêtre en fenêtre lors de la création.

    Pour faire compliquer (Un basouka ) :
    Voir le modèle de design pattern MVC (Modèle Vue Controleur).

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 74
    Par défaut
    Et quand à la méthode simple, comment faire pour faire une composition ?

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    L'héritage est un lien fort entre deux classes qui suppose donc un certain nombre de règle. On ne peut pas hériter pour bénéficier des attributs de la classe de base. D'autant, qu'un héritage de type ne construit pas de lien entres des instances.

    La composition consiste simplement à sortir la gestion de la connexion à la base de donnée dans une classe dédiée et de proposer une association entre des instances de cette classes et celles d'autres classes en ayant besoin.

    Ce serait alors quelque chose comme ça :
    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
     
    class connection
    {// gère la connexion à la base
    public:
     connection(); // ouvre la connexion
      ~connection(); // ferme la connexion
    // et quelque part une politique de copie : 
    private :
       connection(connection const&);
       connection& operator=(connection const&);
    };
     
    class ma_fenetre
    {
    public:
       ma_fenetre(std::shared_ptr<connection> connection_):ma_connection(connection_)
    {}
    private:
       std::weak_ptr<connection> ma_connection;
    };
    Pour le MVC, ce n'est pas si compliqué et ton code devrait plus ou moins finir par ressembler à quelque chose d'avoisinant si chacune de tes classes n'a qu'un et un seul rôle bien identifié.

  5. #5
    Membre éclairé
    Avatar de Kalite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut
    Hors Sujet:
    3D Archi Savez vous ou je pourrait trouver une documentation concernant std::shared_ptr et std::weak_ptr ?
    Je ne connait pas c'est nouveau élément de la STL.

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 74
    Par défaut
    Désolé, mais je ne comprends pas très bien les lignes avec std::weak_ptr.
    Je cherche juste a pouvoir utiliser un attribut d'une autre fenêtre, qui me sert dans mes requêtes sql.

  7. #7
    Membre émérite
    Avatar de Ekleog
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 448
    Par défaut
    Kalite> Documentation de boost, mais les pointeurs standard sont pareil.
    http://www.boost.org/doc/libs/1_48_0...shared_ptr.htm
    http://www.boost.org/doc/libs/1_48_0...r/weak_ptr.htm

  8. #8
    Membre éclairé
    Avatar de Kalite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Par défaut
    Citation Envoyé par tifil Voir le message
    Désolé, mais je ne comprends pas très bien les lignes avec std::weak_ptr.
    Je cherche juste a pouvoir utiliser un attribut d'une autre fenêtre, qui me sert dans mes requêtes sql.
    Ah je vois que je suis pas seul.

    Sinon tu peut les remplacer par des pointeurs ou des références traditionnel.

    Merci Ekleog, je vai regarder.

  9. #9
    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 : 50
    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
    Par défaut
    Citation Envoyé par Kalite Voir le message
    Hors Sujet:
    3D Archi Savez vous ou je pourrait trouver une documentation concernant std::shared_ptr et std::weak_ptr ?
    Je ne connait pas c'est nouveau élément de la STL.
    J'ai écrit un tuto dessus : http://loic-joly.developpez.com/tuto...mart-pointers/
    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.

  10. #10
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 74
    Par défaut
    J'ai lu le tuto, mais je ne comprends toujours pas très bien.
    Si je vous passe la partie de mon code concernée, pourrez-vius e dire directement dessus ???

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

Discussions similaires

  1. Petit Problème d'héritage?
    Par Enjaye dans le forum C++
    Réponses: 9
    Dernier message: 14/11/2012, 14h48
  2. Petit problème d'héritage
    Par ohichamo dans le forum C++
    Réponses: 3
    Dernier message: 04/07/2012, 10h21
  3. Petit problème d'héritage
    Par AF_2.8 dans le forum C++
    Réponses: 4
    Dernier message: 02/12/2010, 16h33
  4. Héritage : petit problème
    Par Fy_Hertz dans le forum C++
    Réponses: 20
    Dernier message: 31/01/2006, 08h39
  5. [jointure] Petit problème sur le type de jointure...
    Par SteelBox dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/02/2004, 18h55

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