> formation Technologies numériques > formation Développement logiciel > formation Python, C, C_plus_plus > formation Programmation C_plus_plus, perfectionnement

Avis loadedNote : 4,3Length : 35TotalNote : 1165TotalNote20 : 45
Toutes nos formations Python, C, C++

Formation Programmation C++, perfectionnement

4,3 / 5
Stage pratique
Best
Durée : 4 jours
Réf : POP
Prix  2021 : 2390 € H.T.
Pauses et déjeuners offerts
  • Programme
  • Participants / Prérequis
  • Intra / sur-mesure
  • avis clients
Programme

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 pédagogiques

À l’issue de la formation, le participant sera en mesure de :
  • 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

Travaux pratiques

Le cours se déroulera sur des stations de travail sous Windows/Visual C++. De nombreux exercices permettront de mettre en oeuvre les thèmes abordés plus spécifiquement sous l'angle de la conception.
PROGRAMME DE 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.

Travaux pratiques
Réécriture d'un code C++ existant en C++11, comparaison des deux implémentations.

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.

Travaux pratiques
Création de foncteurs et de proxies (libération mémoire, comptage de références) avec les opérateurs étudiés.

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.

Travaux pratiques
Mise en œuvre des idiomes "is-a" et "is-kind-of" avec 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.

Travaux pratiques
Démarrage de l'étude de cas qui sera complétée avec la STL. Mise en œuvre de la composition et de la généralisation génériques. Création de plug-ins génériques.

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.

Travaux pratiques
Implémentation des relations avec les collections de la STL. Utilisation d'algorithmes standard quelconques.

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.

Travaux pratiques
Mise en œuvre de la robustesse avec les smart pointers. Utilisation d'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.

Travaux pratiques
Amélioration de l'implémentation de l'étude de cas par l'utilisation la Pointer Container Library.

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

Travaux pratiques
Combinaison de l'héritage multiple, privé et de l'exportation pour concevoir des classes robustes et hautement évolutives.

Participants / Prérequis

» Participants

Concepteurs et développeurs d'applications en C++, chefs de projets, architectes logiciels.

» Prérequis

Bonnes connaissances en développement C++, ou connaissances équivalentes à celles apportées par le stage "Programmation Objet en C++" (réf. C++). Expérience requise.
Intra / sur-mesure

Demande de devis intra-entreprise
(réponse sous 48h)

Vos coordonnées

En cochant cette case, j’atteste avoir lu et accepté les conditions liées à l’usage de mes données dans le cadre de la réglementation sur la protection des données à caractère personnel (RGPD).
Vous pouvez à tout moment modifier l’usage de vos données et exercer vos droits en envoyant un email à l’adresse rgpd@orsys.fr
En cochant cette case, j’accepte de recevoir les communications à vocation commerciale et promotionnelle de la part d’ORSYS Formation*
Vous pouvez à tout moment vous désinscrire en utilisant le lien de désabonnement inclus dans nos communications.
* Les participants inscrits à nos sessions de formation sont également susceptibles de recevoir nos communications avec la possibilité de se désabonner à tout moment.
Avis clients
picto avis clients
GREGOIRE B. 09/03/2021
5 / 5
Dommage que certains éléments aient été introduits via les TP alors qu’une introduction sous forme de cours au préalable aurait été bienvenue. LE contenu de la formation était adapté aux élèves et clair.

THÉO M. 09/03/2021
5 / 5
L’alternance entre les phases théoriques et de pratique est bien dosée. Le formateur est à l’écoute et les supports de cours permettent une un apprentissage progressif.

GWLADYS A. 01/03/2021
4 / 5
Bonne formation, claire, avec un instructeur qui s’adapte au niveau des formés.

AURÉLIEN M. 01/03/2021
5 / 5
Le contenu est clairement intéressant, mais les slides théoriques manquent de finition, ne se suffisent pas à elles mêmes. Cela manque peut-etre de petites démos live plus souvent pour chaque point théorique abordé (100% slide c’est bof). L’animateur est sympathique mais son humour ne semblait pas faire mouche pour l’ensemble de l’auditoire (perso, je suis très bon public). D’habitude, je préfère la th[

PEREZ ANAIS D. 01/03/2021
5 / 5
Très bon équilibre théorie/pratique

SABOT J. 01/03/2021
4 / 5
Contenu: intéressante sur les nouveautés du C++11 Formateur: assez interactif (cours et TP)

KHALGUI M. 01/03/2021
5 / 5
Intéressant, dense, bonne approche sur C++11 et donne de bonnes bases. Les TP sont intéressants et montrent les subtilités du langage.

GABRIEL H. 01/03/2021
5 / 5
Très satisfaisant

BRICE F. 01/03/2021
5 / 5
Super

THOMAS P. 26/01/2021
5 / 5
Contenu très complet et plus encore ;)

FABIEN L. 23/11/2020
4 / 5
Un de mes objectifs lors de cette formation était de mieux comprendre le code c++ et pouvoir coder dans ce langage. L’objectif est rempli même si il

NICOLAS L. 03/11/2020
5 / 5
Très bon contenu, très bon formateur

MATTHIEU R. 03/11/2020
5 / 5
C’était intéressant

PIERRE F. 03/11/2020
5 / 5
super formation.

SIXTINE H. 03/11/2020
5 / 5
Très bien malgré le fait que parfois cela va un peu vite mais c’est, selon moi, normal.

HIEU CAROLINE D. 03/11/2020
5 / 5
Très bon cours, très bonne pédagogie du formateur. Peut-être qu’un tout petit peu plus de pratique sur la partie interface / classes abstraites / classes imbriquées serait bien.

LISA S. 03/11/2020
4 / 5
Je m’attendais à une formation plus technique, plus axée sur l’optimisation de mémoire en C++ et à l’utilisation poussée des threads. Le contenu du cours est d’un niveau "Moyen +", je pensais avoir un cours avec un niveau plus avancé. Pour la pédagogie, le formateur maitrise bien son sujet et sait rapidement donner des exemples concrets pour expliquer des principes du C++. Quelque explications décousues [a

MATTHIEU R. 05/10/2020
5 / 5
Très bonne formation, avec beaucoup de place pour la pratique, et les discussions libres avec le formateur. Cela permet de bien progresser. L’ordre des présentations théoriques ne suit pas le support de cours et semble un peu aléatoire.

ALEXANDRE F. 05/10/2020
5 / 5
Cours complet avec un bon équilibre théorie/pratique et qui répond bien aux attentes.

THIBAULT M. 07/09/2020
3 / 5
Le contenu du cours était techniquement intéressant, mais le support peut-être amélioré (agencement des planches, cohésion de l’ensemble, claireté et commentaires des codes ou concept présentés à améliorer)

LÉOPOLD R. 07/09/2020
5 / 5
Très bon. J’aurais aimé avoir plus de contenu sur les question d’architecture en C++ (templates, polymorphisme, design paterns...)

REGIS C. 01/09/2020
5 / 5
Très bien, un jour de plus n’aurait cependant pas été de trop afin de faire davantage d’exercices

ARMAND . 01/09/2020
5 / 5
Formateur maitrisant intensément le sujet, contact très agréable jour après jour. Contenu très ardu pour moi qui ne pratique pas le C++ au quotidien.

LIONEL N. 01/09/2020
5 / 5
Le cours est très bien construit avec des rappels permettant de préciser le vocabulaire et les périmètres du langage. Les exemples sont très illustratifs permettant une bonne compréhension des mécanismes sous-jacents au point abordé. L’enchaînement avec un cas réaliste permet d’illustrer les difficultés opérationnelles de mise en œuvre et leur résolution grâce aux mécanismes fondament

CHARLÉLIE R. 01/09/2020
5 / 5
Bon contenu pédagogique

MARIA L. 01/09/2020
5 / 5
Très bon cours

NAÏMA K. 21/07/2020
5 / 5
top

FLORENT R. 21/07/2020
5 / 5
Le contenu pédagogique est bien organisé et clair, avec un bon équilibre entre les aspects théoriques et les retours d’expérience du formateur sur des applications concrètes des notions. Le formateur est sympathique et attentionné. Les supports sont lisibles (ce n’est pas des pavés de texte, c’est agréable) et restent suffisamment approfondis pour être lisible (ce n’est pas trop épuré

NATHAN C. 26/05/2020
4 / 5
Le contenu est adapté a mon niveau et aborde des notions nouvelles tout en revenant sur les bases au début.

GROUEC JULIEN L. 26/05/2020
4 / 5
Sujet très dense,mettre encore plus l’accent sur les exercices pratiques pourraient aider à absorber le contenu du cours

STÉPHANE D. 26/05/2020
4 / 5
équilibre difficile à garder avec des formés de niveaux différents.

QUENTIN P. 26/05/2020
4 / 5
Le contenue était en adéquation avec les attentes

NATHAN H. 26/05/2020
4 / 5
Notre Formateur était très compétent et m’a globalement appris beaucoup de chose. Le seul problème étant que je n’avais pas un niveau assez élevé pour cette formation. Je pense aussi qu’il faudrait faire des petits QCM en guise d’exercice à la fin des différents chapitres.

CYRIL M. 26/05/2020
4 / 5
Formateur très pédagogue Sujets très intéressants mais il faut plus de temps pour tout assimiler et pratquer.

BOLLARO J. 26/05/2020
5 / 5
explication très claire pour une sujet très compliqué ! merci Joel
Avis clients 4,3 / 5

Les avis clients sont issus des feuilles d’évaluation de fin de formation. La note est calculée à partir de l’ensemble des avis datant de moins de 12 mois.

CLASSE A DISTANCE

En inter et en intra-entreprise
Inscrivez-vous ou contactez-nous !

Pour vous inscrire

Cliquez sur la ville, puis sur la date de votre choix.
[+]
CLASSE A DISTANCE
[+]
PARIS
[+]
AIX
[+]
BORDEAUX
[+]
LILLE
[+]
LYON
[+]
NANTES
[+]
SOPHIA-ANTIPOLIS
[+]
STRASBOURG
[+]
TOULOUSE

Horaires

Les cours ont lieu de 9h à 12h30 et de 14h à 17h30.
Les participants sont accueillis à partir de 8h45.
Pour les stages pratiques de 4 ou 5 jours, les sessions se terminent à 15h30 le dernier jour.