Formation C++, programmation objet

  • Référence : DEC002
  • Durée : 5 jours (35 heures)
  • Certification : Non
  • Eligible CPF : Non

CONNAISSANCES PREALABLES

  • Connaître les principes de la programmation orientée objet et disposer d’une expérience d’un langage de programmation

PROFIL DES STAGIAIRES

  • Développeurs
  • Ingénieurs
  • Chefs de projets proches du développement

OBJECTIFS

  • Appliquer les principes de la Conception Orientée Objet
  • Maîtriser la syntaxe du langage C++
  • Concevoir des applications C++ utilisant des classes
  • Utiliser les outils de développement associés au langage C++
  • Maîtriser les ajouts majeurs de la norme C++ 11

METHODES PEDAGOGIQUES

  • 6 à 12 personnes maximum par cours, 1 poste de travail par stagiaire
  • Remise d’une documentation pédagogique papier ou numérique pendant le stage
  • La formation est constituée d’apports théoriques, d’exercices pratiques et de réflexions

METHODES D'EVALUATION DES ACQUIS

  • Auto-évaluation des acquis par le stagiaire via un questionnaire
  • Attestation de fin de stage adressée avec la facture

FORMATEUR

Consultant-Formateur expert Développement C, C++

CONTENU DU COURS

1 - Découverte du langage

  • C++ depuis ses origines (langage C) jusqu’à nos jours (C++20)
  • Syntaxe de base
  • Fonctions et passage de paramètres
  • Les tableaux et les enums
  • Les types constants et les casts
  • Copies, pointeurs et références
  • Inférence de type avec le mot-clé auto
  • Surcharge de fonctions et conversions implicites
  • Créer des types utilisateur avec struct et union
  • Définition d’alias avec typedef et using
  • Gestion des erreurs avec les exceptions

2 - Structuration du code

  • Les namespaces
  • Déclaration et définition de symboles (One Definition Rule)
  • Les fonctions et variables membres
  • Les fonctions et variables statiques
  • Principe de const correctness
  • Les opérateurs et leur surcharge
  • Les modules (C++20)

3 - Programmation orientée objet

  • Classes, constructeurs et destructeurs
  • Dérivation et héritage
  • Visibilité et contrôle d’accès (public, protected, private)
  • Mot-clé virtual et redéfinition de fonctions
  • Polymorphisme et encapsulation
  • Sémantique de valeur et sémantique d’entité
  • Types abstraits et interfaces
  • Principe de substitution de Liskov

4 - Gestion robuste des ressources logicielles

  • Défis inhérents à la gestion des ressources
  • Découverte du RAII
  • Différence entre le tas et la pile
  • Découverte de std::string et std::vector
  • Portée, durée de vie et propriété (ownership)
  • Découverte des pointeurs intelligents (smart pointers)
  • Transfert de propriété (move semantic)

5 - Aperçu de la programmation générique et de la métaprogrammation

  • Les différents types de polymorphisme
  • Principes d’une fonction template
  • Introduction aux classes template
  • static_assert, constexpr et consteval (C++20)
  • Découverte des templates variadic et du perfect forwarding
  • Découverte de la métaprogrammation (SFINAE)
  • Découverte des concepts (C++20)

6 - Design de code C++ moderne

  • Introduction aux C++ Core Guidelines
  • Notions de fonction pure et de testabilité du code
  • Découverte de std::optional et std::variant
  • Expressions lambda et std::function
  • Type erasure avec std::string_view et std::span (C++20)
  • Attributs standards : [[nodiscard]], [[deprecated]]
  • La règle de zéro

7 - La bibliothèque standard

  • Flux d’entrée/sortie (streams)
  • Découverte de std::format() (C++20)
  • Gestion du temps avec std::chrono
  • Gestion de fichiers avec std::filesystem
  • Principaux conteneurs de la STL
  • Utilisation des algorithmes de la STL
  • Programmation parallèle et concurrente (threads)
  • Découverte des ranges (C++20)

8 - Construire un projet C++ avec CMake

  • Utilité d’un build system tel que CMake
  • Modes de compilation Debug et Release
  • Découper son projet en plusieurs composants (bibliothèques)
  • Intégrer des bibliothèques externes
  • Ajouter et exécuter des tests unitaires
  • Effectuer une compilation conditionnelle
  • Les outils pour l’optimisation, le débogage, la vérification de code
Cookies