Les 24 heures d'initiation au C++ de l'U.E. 4 permettent aux étudiants d'acquérir les compétences de bases pour créer de petites applications informatiques sûres codées en C++ soit en mode console soit en mode graphique sur la plupart des systèmes d'exploitation. Dans un premier temps, il est proposé aux étudiants la prise en main du logiciel de développement intégré, Qt Creator, afin de réaliser des programmes codés en langage C axés sur l'utilisation de fonctions, structures et pointeurs. Après cette phase de révision, nous montrons la réalisation de ces mêmes applications avec le langage C++ sous la forme impérative. Les objets d'entrées/sorties du C++ (<iostream>), les espaces de noms (std), les chaînes de caractères de la classe std::string, l'usage des structures en C++ mais aussi des mécanismes plus complexes comme la surcharge de l'opérateur dans le flux << ou l'usage du conteneur std::vector<> pour la manipulation de tableaux sont les capacités incontournables du langage étudiées avant d'aborder la programmation orientée objet (P.O.O.) en C++. Dans l'optique de réaliser des applications sûres dans le traitement des données, nous montrons les mécanismes à mettre en place pour assurer leur encapsulation et leur validité. Cette étape passe par la notion de classe et d'objets dotés d'état et comportement par le biais d'attributs et de méthodes. L'encapsulation est alors assurée par l'usage de parties privées imposant la conception d'une interface constituée d'accesseurs, mutateurs, constructeurs et destructeurs. Ce principe est mis en œuvre au travers d'une petite application de gestion d'événements avec le souci de manipuler des dates valides. Enfin, afin de passer à la réalisation d'applications graphiques, les notions de composition et d'agrégation sont abordées avec une attention particulière pour l'usage des opérateurs d'accès aux méthodes (. et ->). Dans la dernière partie de ce cours, nous utilisons l'interface de programmation (A.P.I.) Qt et les premiers principes de la P.O.O. pour la réalisation de petits logiciels graphiques. Nous abordons la notion d'héritage essentielle à l'obtention d'une classe fille à partir de la classe mère QmainWindow. Grâce à l'utilisation du logiciel de conception graphique Qt Designer, nous enrichirons cette classe fille avec des widgets de base (QPushButton, QLineEdit, Qlabel...) afin d'obtenir des interfaces utilisateur riches et fonctionnelles. L'ajout des slots et des signaux pour générer le comportement des applications est également abordé ce qui aboutit rapidement à la création d'une calculatrice graphique et, après l'étude de la classe QString, à celle d'un jeu classique tel que le Pendu.
Objectif 1 : réalisation d'applications1 codées en langage2 C++3 pour le mode console4 :
Révision du langage C5 : fonctions6, structures7 et pointeurs8, usage du compilateur9 gcc10 ;
Prise en main de l'E.D.I.11 multi-plateformes12 Qt Creator13 pour la réalisation d'un projet en langage C ;
Passage du langage C au langage C++ impératif14 (entrées/sorties15, espace de noms16 std17, chaînes de caractères (std::string), structures en C++, surcharge de l'opérateur d'injection dans un flux <<, notion dur le conteneur18 de la S.T.L.19 vector20, usage du compilateur g++).
Objectif 2 : réalisation d'applications sûres en C++ :
Notions d'objet21 et de classe22 (attributs23, fonction membres24, état, comportement d'une instance25...) ;
Notions d'encapsulation26 et d'interface27 (parties publique et privée, accesseurs, mutateurs, constructeurs, destructeurs (la notion de référence n'est pas abordée) ...) ;
Contrôle de validité des données et de leur traitement notamment dans la gestion de dates d’évènement.
Notion de composition28 et d'agrégation29. Usage des opérateurs d'accès au champs (. et ->) ;
Objectif 3 : conception et réalisation d'applications graphiques30 simples grâce à l'API31 Qt32 et la P.O.O.33 :
Notions d'héritage34 (classe fille à partir de la classe mère QMainWindow35) et d’enrichissement ;
Étude de la classe QString36 et de son usage en lien avec des données de types standards ;
Utilisation de Qt Designer37 pour la conception de l'interface utilisateur38 ;
Notion sur l'usage des slots et signaux39 pour générer le comportement des applications ;
Usage de widgets40 de base pour la création d'une calculette et du jeu du pendu41 : QWidget, QPushButton, QLineEdit, QLabel, QMessageBox, QIntValidator42...
Les différentes sections pouvant être abordées dans ce cours sont réparties dans trois grandes parties :
-
la présentation du module (outils, plateforme, ressources pédagogiques);
-
la révision de certaines notions des langages C et C++ impératif (structures et fonctions);
-
les premiers éléments du langage C++ (iostream, espaces de nom, string, vector, inline, recouvrement, référence, ...);
-
le passage des structures aux classes (attributs et méthodes, opérateurs d'accès et de résolution de portée, ...);
-
la protection des données et encapsulation (parties publiques et privées, mutateurs/accesseurs, constructeurs/destructeurs);
-
les compositions et agrégations;
-
l'amitié et la surcharge d'opérateurs;
-
l'héritage (I) ;
-
la découverte de la bibliothèque Qt (Widget classiques et timers);
- Trainer/in: François Dessenne