{Le lien de téléchargement a expiré. Veuillez actualiser la page et réessayer.}

Formation C++ avancée - Maîtriser les techniques expertes

C/C++ PDF 187 pages 1.96 Mo 4,917
Formation C++ avancée - Maîtriser les techniques expertes
PDF 187 p. 1.96 Mo
Télécharger

Lien sécurisé — 5 min

par Raffi Enficiaud

À 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.