NOUS CONTACTER - 📞 +33 (0)1 49 07 73 73    espace pro ESPACE PRO     inscription formation orsys S'INSCRIRE     drapeau francais   drapeau anglais
Nos domaines de formation :
Toutes nos formations Python, C, C++

Formation Programmation C++, perfectionnement

4,6 / 5
Stage pratique
meilleur vente
Durée : 4 jours
Réf : POP
Prix  2019 : 2540 € H.T.
Pauses et déjeuners offerts
  • Programme
  • Participants / Prérequis
  • Intra / sur-mesure
  • avis vérifiés
Programme

En constante évolution, le langage C++ offre des mécanismes tels que la généricité ou la méta programmation qui permettent une conception robuste et très riche. Les récentes normes C++11 et C++14 intègrent une part importante des bibliothèques du projet Boost et 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

  • Découvrir les nouveautés apportées par la version C++11
  • 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 la librairie Boost et 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 et Boost. 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

  • 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 vérifiés
picto avis vérifiés
Lorraine J. 05/03/2019
4 / 5
bonne formation, pourrait être plus dur pour un cours de "perfectionnement"

Julia L. 05/03/2019
5 / 5
bon équilibre entre la théorie et les exercices très bonne formation pour faire un rappel sur les bases du C++ et pour voir ou revoir certains points plus techniques. de bons exemples (cas pratiques/expériences personnelles dans l'informatique industrielle) pour comprendre certaines éléments de la théorie pour certains exercices, il pourrait être intéressant de fournir le squelette du code pour éviter de

Philippe M. 05/03/2019
5 / 5
Formation très utile pour un perfectionnement en C++ et acquérir de bonnes pratiques. Explications claires du formateur et temps passé sur chaque sujet appréciable. Pour les débutants (c'est mon cas, formation de base C++ suivie fin 2018), 1 jour supplémentaire serait parfait pour appréhender de manière optimale les notions en accordant plus de temps aux exercices

Florentin T. 05/03/2019
5 / 5
Trop de temps sur la gestion de memoire le premier jour (cela me parait plus appartenir au C++ basic que C++ perfectionnement). Bon formateur.

Thomas C. 05/03/2019
5 / 5
Animateur très compétent qui sait s'adapter aux stagiaires pour qui un rafraichissement des connaissances est nécessaire. Les exercices sont simples et permettent d'appréhender chaque sujet sans être perdu parce que l'on ne maîtrise pas le concept précédent.

Fabien M. 11/12/2018
4 / 5
Cours bien rythmé entre pratique et théorie. Concept C++ avancé bien ciblé. Démystification du domaine et apport technique important.

Axel T. 11/12/2018
5 / 5
Support du cours fait au point. Très satisfait de la qualité pédagogique du prof. La gestion du temps est excellente.

Arnold C. 11/12/2018
5 / 5
Très bonne formation autant d'un point de vue contenu que du formateur. Permet de bien mieux structuré sa compréhension de la programmation c++.

Fanny D. 11/12/2018
5 / 5
Excellente formation. Très bon équilibre entre théorie et pratique. Très bon support. Excellent formateur.

Véronique F. 11/12/2018
5 / 5
Cours très intéressant. Formateur attentif à la compréhension de la classe.

Julien M. 11/12/2018
5 / 5
Excellente formation et excellent formateur.

Emmanuel P. 18/09/2018
4 / 5
Je connaissais déjà le C++. Le but était plus de voir si je faisais du C++ correctement, mettre des noms et usages sur certains points que j'utilise au quotidien et voir des plus éventuels.

Nicolas V. 18/09/2018
5 / 5
Formateur très compétent et clair dans sa présentation. Contenu de la formation conforme aux attentes.

Tristan S. 18/09/2018
5 / 5
Excellent formateur, cours complet permettant de voir de nombreux sujets. Exercices intéressants dans l'ensemble.

Catherine C. 18/09/2018
5 / 5
un peu trop de temps accordé à Boost.

Sophie M. 26/06/2018
3 / 5
De mon point de vue, étant donné qu'il est entendu ( en tous cas, c'est l'idée que j'en avais) que les candidats ont déjà des connaissances avancées sur la langage, la formation devrait davantage s'orienter vers l'approfondissement des nouvelles normes du langage (C++ 11 / 14 / 17). Il y a trop de rappels sur des notions fondamentales et un brossage très (trop) rapide des nouveaux concepts.

Jean M. 26/06/2018
5 / 5
Parfait, intéressant et parfaitement animé

Jérôme M. 26/06/2018
5 / 5
Cours très intéressant, destiné à des développeurs C++ expérimentés pour pouvoir avoir un Retex sur ces pratiques de développements.

Didier G. 26/06/2018
5 / 5
des exercices sur un cas moins abstrait (avec un projet Template à compléter) serait un plus

Didier S. 26/06/2018
5 / 5
Très bien, contenu approprié et formateur compétent.
Avis client 4,6 / 5

Les avis client 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.

Pour vous inscrire

Cliquez sur la ville, puis sur la date de votre choix.
[+]
PARIS
[+]
AIX
[+]
BORDEAUX
[+]
BRUXELLES
[+]
GRENOBLE
[+]
LILLE
[+]
LYON
[+]
MONTPELLIER
[+]
NANTES
[+]
ORLEANS
[+]
RENNES
[+]
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.