Cursus
Formation C++ Programmation Orientée Objet: les compléments
Objectifs
Tester la généricité et les templates en C++.
Utiliser expressions régulières pour manipuler chaînes de caractères.
Gérer les copies et "move" en C++.
Implémenter RAII et "Smart Pointers" en C++.
Exploiter typeinfo et la réflexion en C++.
Utiliser la STL pour gérer les conteneurs et algorithmes.
Appliquer la programmation fonctionnelle avec lambdas et binding.
Manipuler le système de fichiers avec la librairie filesystem.
Programmer en multi-tâches avec la librairie thread.
Expérimenter synchronisation et performances en programmation multi-tâches.
Pré-requis
Participants
Programme de formation
COMPLÉMENTS SUR LE CONCEPT DE GÉNÉRICITÉ EN C++
-
Définition de méthodes et de classes génériques
-
Template avec types par défaut
-
Utilisation du mot clé typedef dans le cadre de la généricité
-
Template à nombre variable de types
-
Spécialisation de template
-
Notions de "traits" et l'entête traits
MANIPULATION DE CHAÎNES DE CARACTÈRES VIA DES EXPRESSIONS RÉGULIÈRES
-
La librairie string
-
Qu'est qu’une expression régulière ?
-
Le langage d'expression régulière proposé par C++
-
Mise en correspondance, remplacement et extraction d'informations
-
Les expressions régulières gourmandes
-
Travaux pratiques
- Utilisation d'expressions régulières pour réaliser des mises en correspondance, des remplacements et des extractions d’informations
-
Compléments Boost pour la manipulation de chaînes de caractères
-
Travaux pratiques
- Utilisation des compléments offerts par Boost
GESTIONS DES COPIES EN C++
-
Opérateurs de copie et constructeur par copie
-
Correctement réaliser les copies
-
Interdire les copies
-
Opérateurs et constructeurs de "move"
-
Travaux pratiques
- Corrections de bugs relatifs à la copie d'objets et retrait des fonctionnalités de copie
RAII ET LES "SMART POINTERS"
-
Introduction à RAII
- Resource Acquisition Is Initialization
-
Mise en oeuvre d'une classe générique de "Smart Pointers"
-
Problématique des cycles de pointeur
-
Travaux pratiques
- Implémentation d'une classe de "Smart Pointers"
-
Les différentes classes de "Smart Pointers" proposées en C++ ISO
-
Travaux pratiques
- Utilisation des classes standards de "Smart Pointers"
LA LIBRAIRIE TYPEINFO ET LA RÉFLEXION EN C++
-
La librairie typeinfo
-
L'opérateur typeid
-
Transtypage dynamique
- opérateur dynamic_cast
-
Les autres opérateurs de transtypage
-
Travaux pratiques
- Mise en oeuvre d'un prototype de moteur de sérialisation
UTILISATION DE LA STL (STANDARD TEMPLATE LIBRARY)
-
Travaux pratiques
- Utilisation des conteneurs standards et des algorithmes associés
-
Présentation de l'architecture STL
- Les conteneurs, les itérateurs et les algorithmes
-
Travaux pratiques
- Utilisation de quelques conteneurs proposés par la STL
-
Les différents types d'itérateurs
-
Les différentes techniques de parcours de collections
- Itérateurs, for_each, instruction for each...
-
Concept de "functions objects"
-
Travaux pratiques
- Utilisation de "functions objects"
-
Les différents types de collections de la STL
-
Les conteneurs ajoutées par C++11
-
Etude de divers algorithmes proposés par la librairie standard
PROGRAMMATION FONCTIONNELLE EN C++ ET MOTEUR DE BINDING
-
Le concept de lambda
-
Les différents types de captures proposés
-
Travaux pratiques
- Application des lambda à la manipulation de conteneurs STL
-
Le bind C++
-
Travaux pratiques
- Utilisation du module std::bind
MANIPULATION DU SYSTÈME DE FICHIERS
-
La librairie filesystem introduite par C++ ISO 2017
-
Utilisation de path
-
Fonctions de convenances
-
Travaux pratiques
- Mise en oeuvre d'un programme permettant de lister le contenu d’un disque
-
Couplage avec le librairie de manipulation de flux
- istream et ostream
PROGRAMMATION MULTI-TÂCHES EN C++
-
Pourquoi programmer en multi-tâches ?
-
Travaux pratiques
- Développement d'un programme multitâches et synchronisation des accès concurrents
-
Qu'est-ce que thread et qu’est-ce qui le différencie d’un processus ?
-
La librairie thread
-
Connaître les spécificités multi-tâches du système d'exploitation utilisé
-
Les mécanismes de synchronisation des accès concurrents
-
RAII et la gestion des verrous
-
Problèmes de performances en cas de mauvaise stratégie de synchronisation
-
Opérations atomiques
-
Utilisation de local storage