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 :

Les classes : ai-je bien compris le principe général ?


Sujet :

C++

  1. #1
    Invité
    Invité(e)
    Par défaut Les classes : ai-je bien compris le principe général ?
    Bonsoir,

    Voilà en fait c'est pour voir si j'ai bien compris le "schéma général de fonctionnement" des classes, objets, fichier ui, etc...
    Mais également des précisions... ça pour les prochains posts

    Donc je réalise mon premier projet avec Qt Creator : mais sans plus tarder... la pub ! non le code mdr :
    sur le fichier mainwindow.h :
    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
    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
     
    #include <QtGui/QMainWindow>
     
    namespace Ui
    {
        class MainWindowClass;
    }
     
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
     
    public:
        MainWindow(QWidget *parent = 0);
        ~MainWindow();    
     
    private:
        Ui::MainWindowClass *ui;
    };
     
    #endif // MAINWINDOW_H
    D'abord j'ai compris que toute déclaration se fait dans le fichier .h
    Donc ici que des déclarations.
    On commence :
    => 1 namespace et 2 classes dont 1 incluse dans le namespace : la classe "MainWindowClass"
    => déclaration d'une sous-classe/classe fille de sa mère (fille de sa mère... pas top) : la sous-classe "MainWindow", ayant pour maman la classe "QMainWindow" qui est publique ?
    => ensuite il déclare en public : les constructeur et destructeur de la classe que sont respectivement : "MainWindow(QWidget *parent = 0)" et "~MainWindow()"
    et en privé : le pointeur *ui c'est ça ? (variable intouchable pour eviter les bugs, les erreurs ? encapsulation... ?)

    Est-ce correct ? Sinon je vous donne le téléphone de mon notaire... Vous règlerez ces histoires d'héritage avec lui

    Cordialement,
    Gizmo.

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Si tu débutes en C++, tu aurais sans doute largement intérêt à commencer par t'habituer aux bases, en évitant les bibliothèques externes, dont, essentiellement Qt.

    Tu auras déjà bien assez dur à prendre le langage en main sans, en plus, y rajouter les difficultés que peuvent impliqué certains aspects de Qt, comme son système assez particulier de création d'interface avec QtCreator
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    En ce qui concerne mon niveau de c++ je dirais que je ne suis pas complètement débutant : j'ai fait 1 an de c++ à l'école : déclarations, fichiers .h, variables, fonctions, tableaux, et récemment j'ai commencé à apprendre la théorie des pointeurs (je pense compris le principe de base, je dis bien "je pense").
    Récemment j'ai lu des tutos sur la POO : classes, objets, héritage.
    Pour mon projet on m'a donné à un moment donné une instruction.slot : j'aimerais savoir d'où cela vient car j'aime bien savoir ce que je fais.
    Voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ui->maLineEdit->copy();
    (voir topic ici)
    Plusieurs questions ici :
    => que représente le pointeur *ui : le fichier ui de Qt Creator (où l'on glisse les boutons etc...) ? J'avoue que ce point est obscure.
    => Ensuite Ui est un namespace : j'ai eu beau lire des tutos, dans ce cas précis je ne sais pas ce que le namespace représente : je sais que c'est un conteneur de classes mais c'est tout. Crée-t-il un fichier ui ? Quelle relation avec le pointeur *ui ?
    => enfin la double flèche : ui est un pointeur donc on met une flèche d'accord
    mais maLineEdit est un objet donc on met un point non ?
    donc on écrit ceci :
    Non ?

    Merci d'avance.

    Cordialement,
    Gizmo.

    PS : cela ne dérange pas si l'on répond d'abord à mon premier most s'il vous plaît.

    Merci bonne journée à vous.

  4. #4
    Membre très actif
    Profil pro
    professeur des universités à la retraite
    Inscrit en
    Août 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : professeur des universités à la retraite

    Informations forums :
    Inscription : Août 2008
    Messages : 364
    Par défaut
    Tes questions concernent plutôt Qt peut-être devrais-tu les poser dans le sous-forum consacré à Qt....
    Enfin, c'est un modérateur qui te dira ce qu'il convient de faire...

  5. #5
    Invité
    Invité(e)
    Par défaut
    En fait je ne savais pas trop : disons que les classes font partie de la POO, et la POO c'est du c++ entre autres.
    Après ce n'est pas grave si vous souhaitez le supprimer ça m'est égal.

    Cordialement,
    Gizmo.

  6. #6
    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 gizmo27 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ui->maLineEdit->copy();
    (voir topic ici)
    Plusieurs questions ici :
    => que représente le pointeur *ui : le fichier ui de Qt Creator (où l'on glisse les boutons etc...) ? J'avoue que ce point est obscure.
    Sur ce point, désolé, ça fait trop longtemps que je n'ai pas fait de Qt, je préfère m'abstenir.
    Citation Envoyé par gizmo27 Voir le message
    => Ensuite Ui est un namespace : j'ai eu beau lire des tutos, dans ce cas précis je ne sais pas ce que le namespace représente : je sais que c'est un conteneur de classes mais c'est tout. Crée-t-il un fichier ui ? Quelle relation avec le pointeur *ui ?
    Un namespace est juste un moyen de regrouper des classes/fonctions/variables qui ont un lien entre elles, et de les différencier des autres, évitant ainsi des conflits de nom. Il permet par exemple à une fonction a::toto et à une classe B::toto de coexister pacifiquement dans un même programme. On trouvera souvent des namespaces par bibliothèque (par exemple boost), puis des sous namespaces par thème à l'intérieur de la bibliothèque (par exemple boost::serialization).

    Ça n'a aucun rapport a priori avec un fichier ui.
    Ça n'a aucun rapport a priori avec l'objet désigné par le pointeur ui.

    Citation Envoyé par gizmo27 Voir le message
    => enfin la double flèche : ui est un pointeur donc on met une flèche d'accord
    mais maLineEdit est un objet donc on met un point non ?
    donc on écrit ceci :
    Non ?
    ui est un pointeur, donc écrire ui->maLineEdit est équivalent à écrire (*ui).maLineEdit, et permet d'accèder à la variable membre nommée maLineEdit de l'objet pointé par ui.

    Cette donnée membre est elle même un pointeur sur un objet (probablement d'un type QLineEdit), et donc pour accéder à cet objet pour appeler la fonction copy dessus, on doit écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (*ui->maLineEdit).copy();
    Ou le raccourci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ui->maLineEdit->copy();
    PS : J'ai l'impression que tu maîtrise encore assez peu la syntaxe de base du C++, surtout liée aux objets. Et là, tu te retrouve confronté avec Qt à une bibliothèque très riche, mais qui introduit son lot de complexité. Peut-être est-ce légèrement prématuré dans ton apprentissage (même si c'est motivant) ? Peut-être faire un ou deux programmes en mode texte, mais qui définissent leurs propres objets, te permettrait de poser un peu mieux les notions ?
    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.

  7. #7
    Invité
    Invité(e)
    Par défaut
    En réalité j'ai compris entre temps en regardant le contenu du fichier ui en l'ouvrant avec le bloc note windows.
    En fait lorsqu'il crée l'objet malineEdit dans ce fichier c'est un pointeur. Donc on met une flèche c'est évident.
    En vérité la syntaxe avec la double flèche me semble plus intuitive.

    C'est vrai que je grille un peu les étapes... Je ne sais pas... Des fois je me dis que j'apprend bien plus avec un vrai projet...
    Peut-être suis-je dans le faux...
    Ceci étant dit j'ai passé une bonne partie de l'après-midi à lire et relire les tutos ici et là... J'aime comprendre ce que je fais.

    Pour les points obscurs tant pis je passe on verra plus tard pas grave.

    Merci pour la réponse en tout cas.

    Cordialement,
    Gizmo.

Discussions similaires

  1. [Débutant] Besoin de bien comprendre les classes
    Par vahan dans le forum VB.NET
    Réponses: 12
    Dernier message: 24/10/2013, 18h54
  2. Je n'ai pas bien compris les structures
    Par Invité dans le forum Débuter
    Réponses: 4
    Dernier message: 08/07/2013, 17h07
  3. Conseils pour bien écrire les classes ado.net
    Par azerty53 dans le forum VB.NET
    Réponses: 3
    Dernier message: 15/05/2007, 17h24
  4. Ai-je bien compris les possibilités de C#?
    Par berceker united dans le forum Windows Forms
    Réponses: 6
    Dernier message: 29/08/2006, 10h15
  5. Réponses: 31
    Dernier message: 30/03/2006, 16h57

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