Formation : Programmation avancée en C++

L’objectif de la formation est de présenter les nouveautés du langage C++ ainsi que les concepts avancés du langage de programmation C++, la librairie C++ ANSI et notamment la STL (Standard Template Library), ainsi que les concepts de programmation les plus adaptés à C++, notamment la technique RAII.

L’environnement de développement utilisé sera Visual Studio ou Eclipse/CDT.

  • Rappels sur les éléments fondamentaux
    • Les standards C++ ISO 2011, 2014 et 2017
    • Utilisation de la librairie C++ ANSI
    • Les classes de flux
    • La classe de manipulation de chaînes de caractères : string
  • Copie d’objets en C++
    • Problématiques soulevées
    • Les solutions à cette problématique
  • Introduction à RAII
  • Les différentes classes de pointeurs intelligents proposées en C++ ISO
  • Construction et destruction d’objets basés sur l’héritage
    • Cycle de vie d’un objet
    • Cascade des appels de constructeurs
    • Cascade des appels de destructeurs
  • Polymorphisme et modes de liaison de méthodes
    • Liaison statique d’appel de méthodes
    • Liaison dynamique d’appel de méthodes
    • Définition du polymorphisme
  • L’héritage induit le polymorphisme
  • Modes de liaisons d’appels de méthodes
    • La liaison statique (early binding)
    • La liaison dynamique (late binding)
    • Fonctionnement en interne de la liaison dynamique
    • Le piège des destructeurs et les fuites mémoires
  • Définition de méthodes et de classes abstraites
    • Les méthodes abstraites
    • Les classes abstraites
  • L’héritage multiple
    • Introduction au concept
    • Problématiques soulevées
    • L’héritage virtuel
  • Les tables de pointeurs de méthodes à liaison dynamique
    • Fonctionnement du compilateur
    • Fonctionnement avec l’héritage multiple
  • Identification dynamique de types
    • L’opérateur typeid
    • La métaclasse type_info
  • Transtypage dynamique
    • L’opérateur dynamic_cast
    • Fonctionnement avec les types pointés
    • Fonctionnement avec les types référencés
  • Les autres opérateurs de transtypage (non liés au RTTI)
    • L’opérateur const_cast
    • L’opérateur static_cast
    • L’opérateur reinterprete_cast
  • Utilisation du RTTI dans la mise en œuvre d’un moteur de sérialisation
    • Fonctionnement général de la sérialisation
    • Sauvegarde d’un objet sur le flux
    • Reconstruction des objets en mémoire
    • Comparatif avec le moteur des MFC
  • Aspects syntaxiques
  • Intérêts des espaces de noms
  • Mieux structurer vos codes
  • Éviter les confits de nommage
  • Localiser les fonctions du namespace global
  • Le namespace std et C++ ANSI
  • Qu’est-ce qu’une exception ?
    • Types d’exceptions
    • Définition d’une classe d’exception
    • Les classes d’exceptions ANSI
  • Déclenchement d’exceptions
    • Attention au piège des constructeurs
  • Modes de traitement d’une exception
    • Capturer l’exception – instruction try … catch
    • Relayer l’exception à la méthode appelante
  • Cas subtils d’utilisations des exceptions
    • Comment dépiler dans plusieurs contextes
    • Contrôler l’exécution normale du programme
  • Les exceptions prédéfinies de la librairie ANSI
    • La classe
    • L’en-tête
    • Quelques autres classes d’exception
  • Buts et intérêts de la généricité (factorisation de code)
  • Les fonctions génériques
    • Aspects syntaxiques
    • Où localiser le code d’une fonction générique
    • Pièges à éviter
  • Définitions de classes génériques
    • Aspects syntaxiques
    • Implémentation des méthodes génériques
  • Points subtils liés à la syntaxe des templates
  • Concepts généraux
  • Notions de conteneurs
  • Notions d’itérateurs
  • Les algorithmes des STL
  • Notion de « functions objects »
  • Manipulation de quelques conteneurs
  • Utilisation des types vector et list
  • Les paires et les tables associatives
  • La STL et les streams
  • Travaux pratiques : Utilisation des collections standards et des algorithmes associés
  • Programmation multithreads (multitâches)
  • Utilisation de lambda functions
  • Utilisation du moteur de bind

Durée : 21h
Horaires : soirs / week-ends
Groupes de 5 à 10 personnes

Contacts
Localisation
Nous suivre

S'inscrire

Formation Programmation avancée en C++