Jour 1 â Fondamentaux du langage
Objectifs du jour :
- Comprendre le cycle Ă©crire â compiler â exĂ©cuter
- Manipuler types, portées et contrÎles de flux en C++ moderne
Contenu :
- Syntaxe de base :
- Variables, constantes
- Portée des noms
- Déduction de type automatique
- Conditions (if, switch sûr) et boucles classiques
- ModĂšle de compilation C/C++ :
- RĂŽle des fichiers en-tĂȘte / implĂ©mentation
- Impact sur le temps de build
- Bonnes pratiques initiales
- Nommage clair
- Commentaires Doxygen
- Compilation avec options avertissement strict
- Atelier pratique :
- CrĂ©er un petit programme console (par ex. change d'unitĂ©s, devises, longueursâŠ)
- Compiler, exécuter et identifier les fichiers générés par le compilateur.
Â
Jour 2 â Classes, encapsulation & RAII
Objectifs du jour :
- Concevoir une classe sûre et lisible
- Gérer automatiquement la durée de vie des ressources
Contenu :
- Conception de classe :
- Attributs privés
- Fonctions d'accĂšs
- Constantes d'instance
- Cycle de vie RAII :
- Constructeur pour acquérir, destructeur pour libérer
- Copier ou déplacer : choisir selon le besoin
- Std::move
- Espaces de noms & modules
- Accélérer la compilation
- Ăviter les collisions
- Atelier pratique :
- Transformer un code « ouverture/fermeture » manuel (fichier, socket, mutex, etc.) en une classe qui gÚre automatiquement la ressource.
Jour 3 â HĂ©ritage, polymorphisme & STL de base
Objectifs du jour :
- Appliquer héritage public et polymorphisme d'exécution
- Utiliser les conteneurs et algorithmes STL essentiels
Contenu :
- Héritage & interfaces :
- Méthodes virtuelles
- Classes abstraites
- Mots-clefs override/final
- Polymorphisme d'exécution :
- Activer la bonne version d'une méthode
- Sécuriser la hiérarchie avec les mots-clefs
- Gabarits (fonctions gĂ©nĂ©riques) : Ăcrire une seule fonction utilisable avec plusieurs types compatibles
- Design patterns simples : Factory, Strategy...
- Collections standard (aperçu)
- Tableau extensible, liste chaßnée
- Dictionnaire clé-valeur : finalités et complexité
- Parcourir les collections
- Atelier pratique :
- Définir une classe de base (par ex. Employé, Forme, Capteur) puis deux dérivés, stockés dans une collection standard et parcourus pour afficher une information clé.
Jour 4 â C++ moderne & gestion mĂ©moire avancĂ©e
Objectifs du jour :
- Gérer la mémoire sans fuite
- Ăcrire un code concis avec fonctions anonymes et algorithmes standard
- Traiter les erreurs d'exécution de façon centralisée
Contenu :
- Pointeurs intelligents :
- Propriété exclusive, partagée
- Quand choisir l'un ou l'autre ?
- Utiliser std::optional, std::variant, std::any
- Fonctions anonymes (lambdas) :
- CrĂ©er un petit calcul âĂ la volĂ©eâ
- Capturer des variables par copie ou référence
- Algorithmes standards :
- Trier, transformer
- Additionner des éléments sans boucle manuelle
- Gammes de vues en C++20
- Calcul Ă la compilation : constexpr / consteval / constinit
- Gestion propre des erreurs
- Lever / attraper des exceptions
- Atelier pratique :
- Remplacer des pointeurs « nus » par des pointeurs intelligents dans un petit tableau d'objets, puis trier ce tableau selon plusieurs critÚres grùce à une fonction anonyme.
Jour 5 â Fichiers, optimisation & mise en production
Objectifs du jour :
- Lire et écrire des données texte ou binaires sans risque de corruption
- Améliorer les performances grùce au profilage et aux options d'optimisation
- Préparer un projet réutilisable, testé et versionné pour l'équipe
Contenu :
- Entrées / sorties fichiers :
- Ouvrir un fichier en lecture ou écriture, choisir texte vs binaire
- Sauvegarder / charger un objet dans un format clair ou compact
- Profilage & optimisation :
- Mesurer oĂč le programme passe le plus de temps CPU ou mĂ©moire
- Activer les optimisations du compilateur
- Vérifier le gain obtenu
- Construction et tests :
- Créer un script de compilation multi-plateforme
- Ăcrire un test automatique
- Catch 2 ou GoogleTest
- Packaging & versions
- Produire une bibliothĂšque statique ou dynamique
- Produire les fichiers d'en-tĂȘte publics
- Appliquer une numérotation claire pour les livraisons
- Atelier pratique :
- Sur la base d'un module existant, l'intégrer dans un projet de construction (outil standard),
- Ajouter un test automatique minimal
- Produire un paquet prĂȘt Ă ĂȘtre partagĂ© en interne.
Â