Evolution MM

Formations à l'informatique
Découvrez la différence ENI

Lien accueil

Téléchargez le Calendrier des formations

Nantes, Rennes, Niort, Nice, Paris

jusqu'à juillet 2018

Rechercher
Rechercher une formation
 

Langage C++ avancé

Public :

  • Tous développeurs C++ désireux de parfaire leurs connaissances sur le langage C++ et sur sa librairie.

Objectifs :

  • L'objectif de la formation est de présenter : les concepts avancés du langage de programmation C++, la librairie C++ ANSI (et notamment la STL - Standard Template Library) ainsi que les concepts de programmations les plus adaptés à C++ (notamment la technique RAII).
  • Par défaut, l'atelier de développement utilisé sera Eclipse/CDT.
  • L'accent sera mis sur les nombreux travaux pratiques proposés (50% de la durée de la formation).

Pré-requis :

  • Pour pouvoir suivre ce cours, les stagiaires doivent obligatoirement maîtriser les concepts de base du langage C++ : codage de classes, instanciation d'objets, manipulation de pointeurs, définition et utilisation de propriétés (get et set), ...
  • Ces différents points sont couverts dans la formation C++ - Les fondamentaux.

Contenu pédagogique

Mise à niveau des différents stagiaires

  • Rappels sur les éléments fondamentaux
    • C++ ANSI 2003 et C++1x
    • Utilisation de la librairie C++ ANSI
    • Les classes de flux
    • La classe de manipulations de chaînes de caractères : string
  • Copie d'objets en C++
    • Problématiques soulevées
    • Les solutions à cette problématique
  • Mise en œuvre d'une classe de Smart Pointeur (pointeurs malins)

L'héritage - aspects évolués

  • Constructions et destructions d'objets basés sur l'héritage
    • Cycle de vie d'un objet
    • Cascade des appels de constructeur
    • Cascade des appels de destructeur
  • Polymorphisme et modes de liaison de méthode
    • Liaison statique d'appel de méthodes
    • Liaison dynamique d'appel de méthodes
    • Définition du polymorphisme
  • L'héritage induit le polymorphisme
  • Modes de liaisons d'appels de méthodes
    • La liaison statique (early binding)
    • La liaison dynamique (late binding)
    • Fonctionnement en interne de la liaison dynamique
    • Le piège des destructeurs et les fuites mémoires
  • Définition de méthodes et de classes abstraites
    • Les méthodes abstraites
    • Les classes abstraites
  • L'héritage multiple
    • Introduction au concept
    • Problématiques soulevées
    • L'héritage virtuel
  • Les tables de pointeurs de méthodes à liaison dynamique
    • Fonctionnement du compilateur
    • Fonctionnement avec l'héritage multiple
  • Mise en œuvre d'interfaces en C++

Le RTTI (RunTime Type Identification)

  • Identification dynamique de types
    • L'opérateur typeid
    • La métaclasse type_info
  • Transtypage dynamique
    • L'opérateur dynamic_cast
    • Fonctionnement avec les types pointés
    • Fonctionnement avec les types référencés
  • Les autres opérateurs de transtypages (non liés au RTTI)
    • L'opérateur const_cast
    • L'opérateur static_cast
    • L'opérateur reinterprete_cast
  • Utilisation du RTTI dans la mise en œuvre d'un moteur de sérialisation
    • Fonctionnement général de la sérialisation
    • Sauvegarde d'un objet sur le flux
    • Reconstruction des objets en mémoire
    • Comparatif avec le moteur des MFC

Les espaces de noms (namespace)

  • Aspects syntaxiques
  • Intérêts des espaces de noms
    • Mieux structurer vos codes
    • Éviter les confits de nomage
  • Localiser les fonctions du namespace global
  • Le namespace std et C++ ANSI

Gestion des exceptions

  • Qu'est qu'une exception ?
    • Types d'exceptions
    • Définition d'une classe d'exception
    • Les classes d'exceptions ANSI
  • Déclanchement d'exceptions
    • Attention au piège des constructeurs
  • Modes de traitement d'une exception
    • Capturer l'exception - instruction try ... catch
    • Relayer l'exception à la méthode appelante
  • Cas subtiles d'utilisations des exceptions
    • Comment dépiler de plusieurs contextes
    • Contrôler l'exécution normale du programme
  • Les exceptions prédéfinies de la librairie ANSI
    • La classe
    • L'en-tête
    • Quelques autres classes d'exception

Rappels sur la généricité (Les templates)

  • Buts et intérêts de la généricité (factorisation de code)
  • Les fonctions génériques
    • Aspects syntaxiques
    • Où localiser le code d'une fonction générique
    • Pièges à éviter
  • Définitions de classes génériques
    • Aspects syntaxiques
    • Implémentation des méthodes génériques
  • Points subtiles liés à la syntaxe des templates

Utilisation de la STL (Standard Template Library)

  • Concepts généraux
    • Notions de conteneurs
    • Notions d'itérateurs
    • Les algorithmes des STL
    • Notion de functions/objects
  • Manipulations de quelques conteneurs
    • Utilisation des types vector et list
    • Les paires et les tables associatives
    • La STL et les streams

Techniques de développement

  • Sensibilisation à l'utilisation de design patterns
  • Technique de développement RAII (Resource Acquisition Is Initialization)
  • Présentation rapide de la librairie Boost
    • Boost : un pas vers C++ 1x
Durée : 5 jour(s)
Tarif : Consultez-nous
Réf : T440-031

Dates des sessions

Nantes (44) Consultez-nous Rennes (35) Consultez-nous Paris (75) Consultez-nous Niort (79) Consultez-nous Nice (06) Consultez-nous in-class™