IB : 04. C++, programmation Objet
Organisme
92911 PARIS LA DEFENSE CEDEXVoir toutes ses formationsAutres organismes proposant cette formation
Durée
Modalités
- Classe virtuelle
- Présentiel
Une attestation de fin de formation sera remise au stagiaire à l'issue de la formation
Prix
Public
Développeurs, ingénieurs, chefs de projets proches du développement.
Pré-requis
Connaître les principes de la programmation orientée objet et disposer d’une expérience d’un langage de programmation…
Objectifs pédagogiques
- 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
Programme détaillé
1. INTRODUCTION A LA CONCEPTION ORIENTÉE OBJET
- Les paradigmes de développement (procédural, objet, fonctionnel, déclaratif)
- Principes de conception objet : Abstraction, Encapsulation, Héritage et Polymorphisme
- Généricité
2. SYNTAXE ET MODÈLES DE C++
- Point d’entrée d’une application
- Utilisation de la console, objets d’entrée/sortie (streams)
- Typologie des données et initialisation uniforme (C++11)
- Inférence automatique des types avec le spécificateur auto (C++11)
- Les structures de contrôle de flux (if, switch, for, while) et leurs améliorations (C++17/20)
- Les énumérations et leurs nouveautés (C++11/20)
- Fonctions, paramètres et spécificateurs
- Les fonctions lambda (C++11/14/17)
- Fonctions inline et fonctions constexpr (C++11 à C++20)
- Les tableaux et la classe std::array (C++11)
- Introduction à la bibliothèque standard
- Les modèles mémoire (Data segment, Heap, Stack)
- Constantes, pointeurs et références.
- La classe std::string
- Allocation et désallocation dynamiques
- Allocation et désallocation dynamiques Les espaces de noms (namespaces)
- Organisation du code au sein d’un projet (fichiers d’entête et fichiers d’implémentation)
3. LES CONCEPTS OBJET APPLIQUÉS AU C++
- Classes, instances, cycle de vie et cinématique d'un objet
- Éléments de notation UML (modélisation statique et dynamique)
- Encapsulation et visibilité (public-private-protected)
- Méthodes, constructeurs, destructeurs
- La zone d'initialisation des membres (ZIM)
- Fonctions et classes amies (friendship)
- Surcharge (overloading) des méthodes et opérateurs
- Membres de classe (ou statiques)
- Mise en oeuvre des relations (agrégation / composition)
- Robustesse via les spécificateurs de déclaration (default, delete, override, final) de C++11
- Héritage, classes abstraites et concrètes
- Polymorphisme et interfaces
- Destructeur virtuel
- Héritage privé et protégé
- Clonage d'objets (construction par recopie / opérateur d'affectation)
4. ROBUSTESSE ET TRAITEMENT DES EXCEPTIONS
- Prise en compte des erreurs avec les assertions et les exceptions
- Lancement (throw), propagation et interception d’une exception via un gestionnaire (bloc try/catch)
- Conception d'une classe d'exception personnalisée
- Contrôle dynamique d’une exception avec la clause noexcept de C++11
5. POINTS CLÉS DE LA STANDARD TEMPLATE LIBRARY (STL)
- Présentation des principaux conteneurs (vector, list, set, map, deque) et des critères de choix
- Insertion efficace via l’emplacement (C++11)
- Les itérateurs
- Les algorithmes génériques et leurs nouveautés (C++17/20)
6. GÉNÉRICITÉ - TEMPLATES
- Définitions de patrons de fonctions et de classes génériques, syntaxe et instanciation
- Spécialisation générique
- Polymorphisme statique versus polymorphisme dynamique
- Introduction à la métaprogrammation
7. QUALITÉ LOGICIELLE ET TESTS D'APPLICATIONS
- Les best practices en C++
- Idiomes et règles de conception
- Introduction aux design patterns
- Le développement guidé par les tests (TDD – Test Driven Development)
- Présentation succincte de GoogleTest
LES PLUS DE LA FORMATION
- Une pédagogie efficace : l'alternance d'exposés théoriques et de mises en application immédiates à travers de nombreux travaux pratiques.
- Les méthodes, bonnes pratiques et astuces pour tirer le meilleur parti de la programmation en C++ et développer ainsi des applications stables et performantes.
- Répartition théorie/pratique : 45% / 55%
- Cette formation se compose d’une alternance d’apports théoriques, de travaux pratiques, de démonstrations, de phases d’échanges entre participants et de synthèses de la part du formateur.