Nos solutions de formations distancielles et présentielles éligibles au dispositif FNE-Formation 100% financées En savoir plus
Une formation en toute sécurité
Vous avez le choix avec ORSYS !
La formation distancielle
1800 classes à distance,
e-learning, microlearning,
certifications...
En savoir plus
Le présentiel sécurisé
Dispositif sanitaire totalement
déployé dans tous nos centres
En savoir plus
ORSYS formation
NOUS CONTACTER - +33 (0)1 49 07 73 73
NOUS CONTACTER - 📞 +33 (0)1 49 07 73 73    espace pro ESPACE CLIENT     inscription formation orsys S'INSCRIRE     drapeau francais   drapeau anglais

Nos formations :

Toutes nos formations Python, C, C++

Formation Programmation C++, perfectionnement

4,4 / 5
Stage pratique
Best
Durée : 4 jours
Réf : POP
Prix  2020 : 2390 € 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
Alexandre F. 05/10/2020
5 / 5
Cours complet avec un bon équilibre théorie/pratique et qui répond bien aux attentes.

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.

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

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.

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.

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.

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

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

Grouec 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

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

CHEICK K. 26/11/2019
4 / 5
Professeur Super : humainement et professionnellement ! Il aurait été intéressant d'aller plus loin sur certains points pour un cours de C++ avancé.

Elodie N. 26/11/2019
5 / 5
Le formateur a très bien su adapté le contenu à tous les participants et répondre précisément aux questions posées.

Alberto P. 26/11/2019
5 / 5
Le cours est très intéressant et le formateur est vraiment très compètent et pédagogue. Ce serait utile un prérequis/test d'admission préliminaire avant l'inscription. En fait, le premier jour est peu chargé alors que le 3ème/4ème est un peu trop lourd. Le rappels sur stack vs heap sont important, même si ce sujet devrait être déjà théoriquement connu au développeurs C. Consid[
Avis client 4,4 / 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.

CLASSE A DISTANCE

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

Pour vous inscrire

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