Formation C++ avancée - Maîtriser les techniques expertes
À propos de ce cours
Sommaire
- Quelques dicultes du langage
- Rappels sur les instructions
- Classes
- Heritage
- Exceptions structurees
- Etude de cas
- Les templates
- STL
- Patrons de conception (Design patterns)
- Librairies externes
- Extension C++ avec Boost
- Optimisation
Programme du cours
Objectifs d'apprentissage
- Maîtriser les concepts avancés du C++ tels que les templates, la STL et les patrons de conception.
- Comprendre et implémenter l'héritage, le polymorphisme et les exceptions structurées pour des applications robustes.
- Optimiser les performances du code en utilisant des techniques avancées et des librairies externes comme Boost.
- Développer des compétences pratiques via des études de cas concrets pour résoudre des problèmes complexes.
- Apprendre à étendre les fonctionnalités du C++ avec des librairies modernes et des design patterns.
Public cible
Cette formation s'adresse aux développeurs ayant déjà une expérience de base en C++ et souhaitant approfondir leurs connaissances pour créer des applications performantes et maintenables. Les professionnels travaillant sur des projets logiciels complexes, les ingénieurs en systèmes embarqués, et les étudiants en informatique avancée tireront particulièrement profit de ce cours. Une familiarité avec les concepts fondamentaux du C++ (pointeurs, classes, fonctions) est requise.
Quelques difficultés du langage
Le C++ est un langage puissant mais complexe, avec des particularités comme la gestion manuelle de la mémoire, les références, et les subtilités de la surcharge d'opérateurs. Ce module abordera ces défis en fournissant des bonnes pratiques pour éviter les pièges courants (fuites mémoire, undefined behavior) et en expliquant des outils comme les smart pointers.
Rappels sur les instructions
Un rappel des structures de contrôle (boucles, conditions), des opérateurs, et des fonctions sera proposé, avec un focus sur les spécificités du C++ (e.g., références vs pointeurs). Les participants reviendront également sur les meilleures pratiques pour écrire un code clair et efficace.
Classes
Approfondissement des classes : constructeurs/destructeurs, méthodes statiques, opérateurs, et encapsulation. Seront également couverts les move constructors et la sémantique de déplacement introduits en C++11 pour optimiser les performances.
Héritage
L'héritage simple et multiple, le polymorphisme (fonctions virtuelles), et les interfaces seront expliqués avec des exemples concrets. Les participants apprendront à concevoir des hiérarchies de classes flexibles et à utiliser les abstract classes.
Exceptions structurées
Gestion robuste des erreurs via les exceptions : try/catch, création d'exceptions personnalisées, et bonnes pratiques pour éviter les anti-patterns (e.g., utiliser les exceptions pour le contrôle de flux).
Etude de cas
Application des concepts sur un projet simulé (e.g., système de gestion de ressources) pour consolider les apprentissages. Les participants travailleront en groupe sur des problèmes réels, avec revue de code.
Les templates
Programmation générique avec les templates : fonctions et classes templates, spécialisation, et métaprogrammation basique. Ce module montrera comment les templates permettent d'éviter la duplication de code.
STL
Utilisation avancée de la Standard Template Library : conteneurs (vector, map), algorithmes (sort, find), et itérateurs. Les performances des différentes structures de données seront comparées.
Patrons de conception (Design patterns)
Implémentation en C++ des patterns courants (Singleton, Factory, Observer) avec des exemples adaptés aux particularités du langage (RAII, gestion mémoire).
Librairies externes
Intégration de librairies tierces (e.g., Qt pour l'UI, OpenCV pour le traitement d'images). Les bonnes pratiques pour lier et utiliser des dépendances seront expliquées.
Extension C++ avec Boost
Découverte de Boost, une collection de librairies pour étendre le C++ (filesystem, threads, smart pointers). Les participants apprendront à installer et exploiter ces modules.
Optimisation
Techniques avancées : profiling, inline assembly, optimisation des appels de fonctions, et utilisation des cache. Ce module couvrira aussi les fonctionnalités C++20 comme les coroutines.