Programmation C++, perfectionnement
Besoin d’adapter cette formation à vos besoins ?
N’hésitez pas à nous contacter afin d’obtenir un devis sur mesure !
Formation créée le 19/12/2022.
Version du programme : 2
Programme de la formation
En constante évolution, de C++98 à C++20, le langage C++ offre des mécanismes qui permettent une conception robuste et très riche. Les récentes normes C++ améliorent notablement la Standard Template Library (STL). Cette formation vous permettra d'approfondir la conception en C++ par l'apprentissage des dernières évolutions du langage et l'utilisation effective de la STL.
Objectifs de la formation
- Découvrir les nouveautés apportées par les versions
- Maîtriser la gestion de la mémoire, des pointeurs et des références
- Implémenter la généricité en C++
- Découvrir la bibliothèque standard STL
- Utiliser les apports de la norme C++11
Profil des bénéficiaires
- Concepteurs et développeurs d'applications en C++, chefs de projets, architectes logiciels.
- Bonnes connaissances en développement C++
Contenu de la formation
-
Rappels
- Classes d'allocation mémoire.
- Construction, initialisation, embarquement d'objets.
- Les fuites mémoire.
- Constance, le mot-clé mutable, Lazy Computation.
- Amitié (friendship) C++ et contrôle d'accès.
- Destruction virtuelle.
- Stratégie de gestion des exceptions.
- Les espaces de nommage (namespace).
-
Les nouveautés langage de C++11
- nullptr et autres littéraux.
- Les directives =delete, =default.
- Délégation de constructeurs.
- Les énumérations "type safe".
- Le mot-clé auto et boucle sur un intervalle.
- Référence rvalue et impact sur la forme normale des classes C++.
- Les lambda expressions
-
Gestion des opérateurs
- Opérateurs binaires et unaires.
- L'opérateur d'indirection, cas d'usage.
- L'opérateur de référencement.
- Les opérateurs d'incrémentation/décrémentation préfixés et post-fixés.
- Les autres opérateurs : comparaison, affectation...
- La surcharge de l'opérateur [], des opérateurs d'insertion (<<) et d'extraction (>>).
- Les foncteurs et la surcharge de l'opérateur (), avantage par rapport aux fonctions.
-
Conversion et RTTI
- Opérateurs de conversion. Constructions implicites, le mot-clé explicit.
- Les opérateurs de casting const_cast, static_cast, reinterpret_cast.
- Conversion dynamique et Runtime Type Information.
- L'opérateur typeid, les exceptions liées.
- La classe type_info.
- Contrôle du "downcasting" à l'aide de l'opérateur dynamic_cast.
-
La généricité
- Introduction aux patrons de classe. Généricité et préprocesseur.
- Fonction générique. Classe générique. Composition générique. Généralisation générique.
- Spécialisation partielle et totale.
- Introduction à la méta-programmation.
- La généricité, principe fédérateur des librairies STL et Boost.
-
La STL (Standard Template Library)
- Composants de la STL : types complémentaires, conteneurs, algorithmes, itérateurs, objets fonctions, les adaptateurs.
- Les chaînes de caractères STL, la classe template basic_string et ses spécialisations.
- Les conteneurs séquentiels et associatifs : définition, rôle et critères de choix.
- Les allocateurs et la gestion de la mémoire des conteneurs.
- Les méthodes d'insertion, de suppression, d'itération et d'accès aux principaux conteneurs : Vector, List, Set, Stack...
- Le concept d'itérateur. Parcours d'un conteneur.
- Les différents groupes d'algorithmes STL : non mutants, mutants, de tri et de fusion, numériques.
- Manipulation de conteneurs (manipulation, recherche de valeurs...).
- Paramétrer les algorithmes génériques par des objets "fonction".
- Les "adapteurs" et la modification du comportement d'un composant.
- La STL et les traitements sur les flux (fichiers, mémoire...).
- Principe du RAII : les pointeurs automatiques et la classe auto_ptr.
- Les exceptions standard de la STL.
-
Les nouveautés C++11 de la librairie standard
- Evolution historique : Boost --> TR1 --> C++11.
- Les nouveaux conteneurs : array, forward_list, unordered_set, unordered_map.
- La classe tuple.
- Les pointeurs intelligents (smart pointer) : shared_ptr, weak_ptr, unique_ptr.
- Les nouveaux foncteurs et binders.
- Introduction à la gestion des threads.
- Les expressions régulières.
-
Boost et ses principes
- La Pointer Container Library (destruction des données pointées d'un conteneur).
- Les structures de données boost::any et boost::variant.
- Programmation événementielle (connexions et signaux).
- Gestion des processus, mécanismes de communication interprocessus et mémoire partagée.
-
Utilisation avancée de l'héritage
- Héritage versus embarquement. Héritage privé. Héritage protégé.
- Exportation de membres cachés avec la Clause Using.
- Héritage multiple et gestion des collisions de membres.
- Héritage en diamant. Héritage virtuel et dynamic_cast.
- Principes de conception : substitution de Liskov, principe d'ouverture/fermeture, inversion des dépendances.
- Règles d'implémentation des interfaces en C++.
Nos formations dont animées par des experts reconnus dans leur domaine possédant une expérience sur le terrain significative et des compétences pédagogiques reconnues.
- Entretien permettant l’analyse des besoins des participants et/ou questionnaire de positionnement
- L’évaluation des compétences est réalisée : Par des exercices pratiques et/ou mises en situation, tout au long de la formation Par un exercice de synthèse et/ou un questionnaire d’auto-évaluation et/ou une certification, en fin de formation
- Questionnaire de satisfaction à chaud en fin de formation, et à froid à 3 mois
- Feuille de présence émargée par demi-journée par les stagiaires et le formateur
- Certificat de réalisation de l’action de formation.
- Méthode participative
- Étude de cas / Mise en situation.
- Exposé et réflexion sur ses propres projets
- Exposés, aides visuelles, support de cours, exercices pratiques d’utilisation
- Questions/réponses entre les stagiaires et le formateur