Formation Développer en C++ 11/14/17 - Leuville Objects

Développer en C++ 11/14/17

Description

Cette formation aborde de façon concrète les avancées des versions 11/14/17 de C++: lambdas, templates variadiques, threads, mécanisme de déplacement, ... Ces nouveautés permettent à C++ d'offrir des mécanismes analogues à ceux de ces concurrents tels que Java ou C#, et améliorent de façon très importante les codes produits.

Objectifs

A l'issue de cette formation, les participants seront en mesure de:

  • Utiliser les améliorations syntaxiques introduites en C++11
  • Ecrire des classes C++ de meilleure qualité basées sur les déclarations explicites
  • Comprendre les nouveautés en matière de gestion des exceptions
  • Maîtriser les concepts de déplacement et de pointeur intelligent
  • Exploiter l'API normalisée de programmation multi-threadée
  • Utiliser des templates variadiques
  • Développer des lambda-expressions

Méthodes pédagogiques

Formation avec un minimum de 50% de travaux pratiques. La session alterne les présentations théoriques avec les exercices en groupe ou individuels. Des versions numériques de tous les documents sont remises aux participants (support de cours, énoncés, corrigés).

Participants

Développeur, concepteur ou chef de projet MOE connaissant C++.

Pré requis

  • La pratique de C++ est indispensable pour suivre cette formation.

Programme

Les améliorations du langage

Ce module présente l'ensemble des améliorations destinées à rendre le code C++ plus lisible et maintenable.

  • Les avancées des versions C++ 11, 14, 17 et 20
  • Les améliorations des types: enum, unions, POD
  • Le pointeur nullptr
  • La boucle for sur intervalle
  • L'inférence de type à la compilation avec auto

Mise en pratique: première mise en pratique avec auto et la nouvelle boucle for

Les nouveautés des classes C++

Ce module présente l'ensemble des améliorations destinées à rendre les classes C++ plus lisibles.

  • L'initialisation des données membres
  • La délégation des constructeurs
  • La déclaration de redéfinition (override) et final
  • Les mécanismes de conversions de types explicites

Mise en pratique: réalisation d'une arborescence de classes

Les exceptions

Ce mécanisme de gestion d'erreur subit de grosses évolutions.

  • Les préconisations d'emploi des exceptions
  • Le pointeur sur exception courante
  • Les clauses throw et noexcept

Mise en pratique: réalisation d'un code employant la clause noexcept

Le mécanisme de déplacement

Présentation du mécanisme permettant d'optimiser la gestion mémoire et les performances.

  • Introduction du concept de rvalue
  • Le constructeur par déplacement et l'affectation par déplacement
  • La forme normale d'une classe
  • L'impact du principe de "move" au niveau de la STL
  • Le bon usage du mécanisme de placement (emplace_back)

Mise en pratique: réalisation d'une classe dont les instances sont "move constructible" et "move assignable"

Les templates

Présentation des améliorations.

  • Les templates variadiques
  • La spécialisation partielle de templates
  • Les arguments templates locaux et anonymes

Mise en pratique: utilisation de templates variadiques

Les lambda-expressions

La programmation fonctionnelle en C++.

  • Le concept de programmation fonctionnelle
  • La déclaration et l'appel d'une lambda-expression
  • La capture du contexte englobant
  • Les lambda-expression templates

Mise en pratique: programmation de différentes lambda-expressions avec paramètres et capture

Les pointeurs intelligents

Les mécanismes de gestion automatique des allocations/libérations.

  • Le type shared_ptr et son fonctionnement (zone de contrôle)
  • Les références faibles (weak_ptr)
  • L'utilisation des smart pointers dans la STL

Mise en pratique: utilisation de shared_ptr

Les threads normalisés

La programmation multi-threadée en C++.

  • Le fonctionnement et les états d'un thread
  • Les techniques de lancement d'un thread (callable, async, future, promise, ...)
  • Les sections critiques (mutex) et la synchronisation des threads (condition_variable)
  • La gestion mémoire (volatile et types atomiques)

Mise en pratique: parallélisation d'un algorithme et analyse des performances, réalisation d'un producteur-consommateur (moniteur de Hoare).

Filière

C++

Code

CP-CPP1X

Durée

3 jours

Tarif

1190 € HT

Sessions

Nous contacter

01 39 50 2000