ORSYS formation
NOUS CONTACTER - +33 (0)1 49 07 73 73
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,5 / 5
Stage pratique
Best
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 qui permettent une conception robuste et très riche. Les récentes normes C++ 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
Noel N. 04/06/2019
5 / 5
Contenu de la formation pertinent et bonne interaction avec le formateur. Plus de pratique serait mieux.

Louis C. 04/06/2019
5 / 5
Explications claires, différents exemples et cas pratiques.

Sarah G. 04/06/2019
5 / 5
Le temps de la formation est trop courte. 3 jours serait adéquat afin de faire des exercices.

ANICET-PIERREFITTE 04/06/2019
5 / 5
Contenu très enrichissant et conforme à mes attentes

Khaled K. 04/06/2019
5 / 5
Contenu intéressant et bien présenté. Excellent formateur, attentif et à l'écoute.

Nathalie G. 04/06/2019
3 / 5
Trop de temps passé sur les exercices. Et pas de correction proposant une implémentation propre et correcte. Cours survolé avec pour conséquence pas le temps de comprendre les informations. La moitié du support a été survolé le dernier jour.

Jean-Yves N. 04/06/2019
4 / 5
Trop de temps accordé aux exercices. Cours énoncé trop vite : la moitié faite le dernier jour.

Eric J. 04/06/2019
4 / 5
Le stage a répondu a mes attentes. Il mériterait d'être augmenter d'un jour, pour pouvoir faire toute la pratique donnée.

Alexandre I. 04/06/2019
4 / 5
Ok mais trop de sujets abordés en peu de temps. Quelques manques sur des points importants (RVO, nouveautés cpp17, a venir cpp20...)

Bernard L. 04/06/2019
4 / 5
Pour mon cas personnel, besoin de révisions et d'apprentissage des nouveautés le contenu est parfait. L'animateur est intéressant dans l'exposé des sujets. Il est aussi très pédagogique dans le choix des exercices de travaux pratiques qui sont vraiment démonstratifs.

PASCAL L. 04/06/2019
5 / 5
pédagogie très bien. contenu à mettre à jour avec les nouvelles versions de C++.

Alexandre C. 02/04/2019
5 / 5
Contenu intéressant et bien présenté

Rayhana Z. 02/04/2019
5 / 5
très bon formateur qui connait son domaine voir plus. notions abordées de manière pédagogiques avec exemples concret issus du terrain

Aurore B. 02/04/2019
5 / 5
Très bon enseignement, efficace et adapté.

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.
Avis client 4,5 / 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
[+]
BRUXELLES
[+]
NANTES
[+]
SOPHIA-ANTIPOLIS

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.
En poursuivant votre navigation, vous acceptez l’utilisation de cookies nous permettant de vous proposer des offres correspondant à vos centres d’intérêt.
En savoir plus sur l’usage des cookies…   ✖ Fermer
linkedin orsys
twitter orsys
it! orsys
instagram orsys
pinterest orsys
facebook orsys
youtube orsys