ac6-formation, un département d'Ac6 SAS
FR
FrançaisEnglish
 
go-up

ac6 ac6-formation Programmation Langages C++ classique et moderne pour l'embarqué
L30

C++ classique et moderne pour l'embarqué

Objectifs

  • Maîtriser les bases du langage C++
  • Intégrer les templates C++ (code générique) dans les systèmes embarqués
  • Maîtriser les aspects avancés du C++ tels que le polymorphisme, l'héritage simple et l'héritage multiple
  • Redéfinir les opérateurs C++ d'allocation dynamique de mémoire pour l'embarqué
  • Rendre les objets C++ persistants flashables et romables
  • Gérer les exceptions en C++ pour sécuriser les applications embarquées
  • Utiliser des objets C++ pour gérer la transmission/réception série de chaînes de caractères
  • Découvrir les fonctionnalités modernes du C++
  • Apprendre les changements de langage dans C++11, C++14, C++17 and C++20
  • Découvrir les nouvelles fonctionnalités ajoutées à la bibliothèque standard
  • Apprendre les fonctionnalités avancées du C++ moderne comme "perfect forwarding"
  • Passer du C++ traditionnel au C++ moderne
  • Mettre en évidence les fonctionnalités essentielles du C++ moderne utilisées dans les applications embarquées
  • Cours théorique
    • Support de cours imprimé et au format PDF (en anglais)
    • Le formateur répond aux questions des stagiaires en direct pendant la formation et fournit une assistance technique et pédagogique
  • Activités pratiques
    • Les activités pratiques représentent de 40% à 50% de la durée du cours
    • Elles permettent de valider ou compléter les connaissances acquises pendant le cours théorique.
    • Un PC pour deux stagiaires pour les activités pratiques
    • Une plateforme cible pour deux stagiaires (sauf en cas d'utilisation de qemu)
    • Accès à un serveur cloud privé
    • Exemples de code, exercices et solutions
    • Le formateur assiste les stagiaires pendant les exercices
  • Au début de chaque demi-journée une période est réservée à une interaction avec les stagiaires pour s'assurer que le cours répond à leurs attentes et l'adapter si nécessaire
  • Tout ingénieur ou technicien en systèmes embarqués possédant les prérequis ci-dessus
  • Les prérequis sont vérifiés avant l'entrée en formation, sur la base des prérequis publiés sur cette fiche.
  • Pendant la formation, les acquis sont évalués en continu : quiz de fin de séquence et observation directe du formateur.
  • À l'issue de la formation, chaque participant reçoit une attestation de fin de formation.

Plan du cours

  • Introduction à la programmation orientée objet
  • Historique et définition
  • Panorama de C++98/C++03/C++11/C++14/C++17/C++20
  • Objectifs du C++ moderne
  • Passer du C au C++
  • Embedded C++
  • Comment écrire du code embarqué optimisé
  • Programmation orientée objet en C++
    • Encapsulation
    • Classes et objets
    • Attributs et fonctions membres
    • Construction et destruction des objets
    • Paramètres de construction
    • Constructeur de copie
    • Composition et conteneur d'objets
    • Opérateur de résolution de portée
  • Optimiser le passage des objets en paramètre
  • Surcharger les opérateurs par des fonctions membres
  • Surcharger les opérateurs par des fonctions friend
  • Surcharge des opérateurs de gestion de la mémoire
  • Spécialisation par ajout et par substitution
  • Dérivation et règles d'accès
  • Construction lors de l'héritage
  • Polymorphisme d'héritage
  • Méthodes virtual
  • Objets constants et partiellement constants
  • Objets persistants
  • Objets flashables
  • Lever, capturer et traiter les exceptions
  • Relancer une exception
  • Spécifications d'exceptions
  • Traiter une exception inattendue
  • Objets exception de la bibliothèque standard C++
  • Pointeurs sur membres
  • Objets génériques et templates
    • Classes et fonctions génériques
    • Surcharge de templates
    • Spécialisation de templates
    • STL (Standard Template Library)
    • Les templates dans les systèmes embarqués
  • Objets polymorphes
  • Objets virtuels et classes abstraites
  • Spécialiser des objets par héritage simple
    • Construire des objets dérivés
    • Règles de contrôle d'accès des objets hérités
    • Spécialiser des objets par héritage multiple
    • Résolution des conflits par l'opérateur de portée
    • Héritage virtual
  • Présentation
  • Spécificateurs de classe de stockage
  • Initialisation uniforme
  • C++ Named Requirements
  • Déduction automatique de type
    • Le mot-clé auto
    • Le mot-clé auto comme type de retour d'une fonction
    • Utiliser auto pour déclarer des signatures de fonctions
    • Références constantes automatiques
    • Forwarding references
    • Avantages de auto dans les systèmes embarqués
  • Enum class
  • override et final
  • Variables inline
  • nullptr
  • static_assert
  • noexcept
  • constexpr et if constexpr
  • decltype
  • Fonctions defaulted et deleted
    • Mettre en œuvre un singleton thread-safe
  • Structured binding
  • Boucles for basées sur un intervalle
  • Namespaces imbriqués et alias de namespace
  • Alignement
    • Alignas
    • Alignof
  • Move semantics et références r-value
    • Copy-constructing et Move-constructing
    • Références r-value
    • Perfect forwarding
  • Bibliothèque standard
    • std::optional
    • std::variant
    • std::any
    • std::byte
    • std::hash
    • Bibliothèque Filesystem
  • Littéraux
    • Cooked literals
    • Opérateurs de littéraux standard
    • Raw literals
    • Raw string literals
  • Génération de nombres aléatoires
    • Moteurs de génération de nombres aléatoires
    • Distributions de nombres aléatoires
  • Conteneurs
    • std::array
    • std::forward_list
    • Conteneurs associatifs non ordonnés
  • Nouveaux types de chaînes
    • std::u16string
    • std::u32string
  • Basic string view
  • Conversions entre types numériques et chaînes
  • Conversions élémentaires de chaînes
  • Manipulateurs d'entrée/sortie
    • std::get_money, std::put_money
    • std::get_time, std::put_time
    • std::quoted
  • Expressions régulières
    • Format d'une chaîne
    • Analyser le contenu d'une chaîne
    • Remplacer le contenu d'une chaîne
  • Introduction
  • Thread
  • Opérations atomiques
    • Fonctionnalités atomiques
    • Fonctions non membres
    • Atomic flag
    • Memory order
  • Mutex
    • Éviter les mutex récursifs
  • Envoyer des notifications entre threads
  • Variables de condition
  • Future et Promise
  • Task et Async
  • Le C++ moderne et les RTOS
  • Syntaxe des lambdas
  • Définir des lambdas
  • Utiliser des lambdas
    • Utiliser des lambdas avec les algorithmes standard
    • Affecter des lambdas à des pointeurs de fonction
    • Lambdas et std::function
    • Écrire une fonction acceptant une lambda en paramètre
  • Lambdas polymorphes
  • Lambdas récursives
  • Gestion de la mémoire
  • Erreurs de mémoire
  • Smart Pointers
    • Raw Pointers
    • Pointeurs automatiques
    • Unique Pointers
    • Shared Pointers
    • Weak Pointers
Plus d'information

Pour vous enregistrer ou pour toute information supplémentaire, contactez nous par email à l'adresse info@ac6-formation.com.

Les inscriptions aux sessions de formation sont acceptées jusqu'à une semaine avant le début de la formation. Pour une inscription plus tardive nous consulter

Vous pouvez aussi remplir et nous envoyer le bulletin d'inscription

Ce cours peut être dispensé dans notre centre de formation près de Paris ou dans vos locaux, en France ou dans le monde entier.

Les sessions inter-entreprises programmées sont ouvertes dès deux inscrits. Sous condition d'un dossier complet, les inscriptions sont acceptées jusqu'à une semaine avant le début de la formation.

Dernière mise à jour du plan de cours : 2 juillet 2026

L'inscription à nos formations est soumise à nos Conditions Générales de Vente

Sur le même sujet :

Yocto ou Buildroot : comment choisir pour votre projet Linux embarqué