Formation C++ : Programmation objet en C++

4.9 sur 5 étoiles

5 étoiles
87%
4 étoiles
12%
3 étoiles
0%
2 étoiles
0%
1 étoile
0%
Voir les 8 avis
(8 avis)
Durée 5 jours
Niveau Intermédiaire
Classe à distance
Possible

Vous pouvez suivre cette formation en direct depuis votre domicile ou votre lieu de travail. Plus d'informations sur notre solution de classe à distance...

Référence DPOC

Apparu au début des années 1980 pour apporter au langage C la dimension objet tout en capitalisant sur ses performances, le langage C++ est encore aujourd’hui toujours très présent dans les projets de développement. Il a apporté de nombreuses améliorations au langage C comme le typage fort, la surcharge de fonctions, la programmation générique, les pointeurs intelligents et une très riche librairie STL (Standard Template Library) qui lui ont permis de maintenir sa popularité.

Cette formation C++ vous permettra de mettre en œuvre tous ces éléments en respectant la syntaxe, y compris celle de l’importante norme C++ 11, afin de livrer un code portable et sécurisé. Vous apprendrez à produire un code de qualité qui respecte les bonnes pratiques professionnelles en matière de conception et de développement objet.

Objectif opérationnel :

Concevoir et mettre en œuvre une application C++ performante selon une approche objet.

Objectifs pédagogiques :

À l'issue de cette formation C++, vous aurez acquis les connaissances et compétences nécessaires pour :

  • Concevoir l’architecture d’une application C++ en utilisant ses propres classes ou des classes existantes
  • Savoir programmer objet en C++ (classe, méthode, propriétés, constructeur, instance, etc.)
  • Maîtriser la syntaxe du C++
  • Maîtriser son environnement de développements (outils, compilation, build, etc.)
  • Connaître la norme C++ 11 et les nouveautés introduites par cette version et les suivantes

Public :

Ce cours C++ s’adresse prioritairement à un public technique comme les développeurs qui souhaitent développer ou maintenir des applications ou modules écrits en C++.
Elle intéressera plus particulièrement les développeurs dans les domaines cibles du C++ comme l’embarqué, le système, les IoT, la communication, etc. mais ne saurait s’y réduire tant les domaines d’application du C++ sont vastes et ses performances attractives pour tous les développeurs.

Cette formation peut aussi convenir à des ingénieurs maîtrisant déjà C ou C# et envisageant de se certifier prochainement sur le C++ via le CPP Institute.

Prérequis :

Cette formation C++ demande de savoir développer dans au moins un langage de programmation (C, PHP, Java, C#, Python, etc.) car la formation ne prévoit pas de revenir sur les bases (variables, test, boucle, appel fonction, etc.).
Concernant la dimension objet il est conseillé de disposer d’une culture objet sur les fondamentaux (classe, propriétés, méthodes, instance, héritage) et de ne pas totalement les découvrir même si la formation revient dessus la première demi-journée dans le cadre du C++.

J1

Les concepts de la Programmation objet essentiels pour bien commencer en C++

Les paradigmes de la P.O.O.
La classification
Contrôler l’accès aux données (encapsulation)
Introduction aux diagrammes de classes UML2
Les associations entre classes : l’association directe, l'agrégation, la composition
L'héritage, la dérivation
Fournir les informations essentielles (abstraction)
Travaux pratiques (à titre indicatif)Objectifs : Valider que les concepts objets fondamentaux sont maîtrisés par tout le monde
Présenter le modèle objet que l’on va utiliser en fil rouge dans la formation (il ne sera pas unique afin de bien comprendre les manipulations communes à toutes les classes et ce qui est spécifique à chacune)
Description : Quizz qui valide dans un premier temps que tout le monde dispose du vocabulaire objet, que ce vocabulaire est commun à tous participants et au formateur, mais aussi que tout le monde a compris en profondeur chaque concept.

C++, le langage

Les types de données, les opérateurs
Les pointeurs bruts 
Le type référence lvalue 
Les structures de contrôles
Les fonctions et la surcharge
L'opérateur de résolution de portée
Liaison C - C++
Les paramètres par défaut des fonctions
Les fonctions " inline "
Les espaces de noms
Les énumérations
Travaux pratiques (à titre indicatif)Objectifs : Valider que tout le monde est à l’aise avec son environnement de développement et prend en main la syntaxe de base du C++ (opérateurs, types, tests, etc.).
Description : Réalisation du programme types.cpp, qui définit et initialise une variable de chacun des types primitifs disponibles (bool, char, int, etc…). Chacune des variables est ensuite affichée en utilisant l'objet cout
Saisie d'un nombre décimal, calcul, affichage du résultat
Réalisation du programme celcius.cpp qui demande la saisie au clavier d'une température en degrés Fahrenheit, puis calcule et affiche la température correspondante en degrés Celsius en interdisant les valeurs hors plage.
J2

Les classes en C++

Définition d'une classe
Les qualificateurs " public " et " private "
Instanciation d’une classe
Les constructeurs par défaut
Les constructeurs surchargés
Le constructeur de copie
Surcharge de l'opérateur d'affectation
Le destructeur
Le mot-clé this
Les méthodes const
Les membres static
Fonctions amies
Surcharges d’opérateurs
Travaux Pratiques (à titre indicatif)Objectifs : Maîtriser la création de classe, l’instanciation, les constructeurs et la surcharge des méthodes
Description : Création d’un classe « counter » permettant de créer un objet qui génère une séquence de nombres (incrémentation, valeur actuelle, affichage, etc.)
Surcharges du constructeur en y passant un nombre ou un objet (pour s’initialiser sur cet objet)
J3

Relations entre classe (association, composition, héritage)

Traduction en C++ d’une association, d’une composition
Importance de la liste d’initialisation dans les constructeurs
L'héritage public simple
Ordre d'exécution des constructeurs et destructeurs
Les règles de conversion
Le qualificateur d'accès protected
Les héritages privé et protégé
L'héritage multiple répété et ses difficultés de mise en oeuvre
Travaux Pratiques (à titre indicatif)Objectifs : Comprendre comment mettre en œuvre une association directe, puis une composition entre classes. Savoir spécialiser une classe existante par héritage pour ne pas tout réécrire en maîtrisant l’impact hiérarchique dans la syntaxe (classe mère et descendance.)
Description : Mise en œuvre d'une relation d’association puis de composition entre deux classes. Construction d'une hiérarchie de classes à trois niveaux. Manipulation d'objets de ces classes. Mise en œuvre d'un héritage multiple répété

Le polymorphisme

Les méthodes virtuelles
Intérêt du polymorphisme
Mise en œuvre du polymorphisme
Les classes abstraites et les méthodes virtuelles pures
Les destructeurs virtuels
Travaux Pratiques (à titre indicatif)Objectifs : Savoir mettre en œuvre le polymorphisme, 
Description : Mise en œuvre du polymorphisme dans le Design Pattern Factory Method : obtenir un objet d’une sous-classe dans une hiérarchie de classes avec héritage multiple comportant une classe abstraite pure
J4

La gestion des exceptions

Principe du traitement des anomalies
Utilisation des mot-clés try, catch et throw
Traiter les exceptions sur place
Propager les exceptions
Lever une exception
Créer ses propres classes d’exception
Travaux Pratiques (à titre indicatif)Objectifs : comprendre comment gérer les exceptions dans une application effectuant des entrées-sorties
Description : Calcul de la somme des soldes mensuels d’un compte bancaire par lecture d’un fichier CSV avec mise en œuvre d’un traitement sur place d’exceptions puis en propageant les exceptions à la fonction appelante

Les templates en C++

Principe des templates
Avantages/inconvénients
Paramètres template
Syntaxe des templates de fonctions
Syntaxe des templates de classes
Syntaxe des templates de méthodes
Instanciation des templates de fonctions
Instanciation des templates de classes
Instanciation implicite vs instanciation explicite
Travaux Pratiques (à titre indicatif)Objectifs : Comprendre et mettre en œuvre la généricité des types dans une fonction grâce aux templates 
Description : Création d'un template de fonction (fonction rendant le « plus petit » de 2 objets passés en argument indépendamment de leur type). Création d'un template de classe (tableau redimensionnable automatiquement)
J5

Les pointeurs intelligents (smart pointers C++11)

Principe de la gestion RAII des ressources
Danger des pointeurs bruts
Intérêt des smart pointers
Raisons de l'obsolescence de auto_ptr
Mise en œuvre de unique_ptr, shared_ptr, weak_ptr
Utilisation de make_unique et make_shared
Travaux Pratiques (à titre indicatif)Objectifs : Comprendre la mise en œuvre des smart pointers pour la gestion des ressources
Description : Mise en oeuvre, dans une petite application, de la technique RAII par remplacement des pointeurs bruts par des pointeurs intelligents

Outils de développement

Présentation des IDE courants
Options de compilation
Cross-compilateurs
Génération d’un exécutable, fichiers objets
Utilisation des fonctionnalités de debug
Commande make sous Linux, makefile
Utilisation de git
Travaux Pratiques (à titre indicatif)Objectifs : Savoir debugguer une application et modifier les options de compilation. Savoir packager une application C++.
Description : Recherche de bugs dans une application et correction. Mise en œuvre d’une chaîne de build automatisée.

Aperçu de la librairie STL

Présentation, documentation
Les conteneurs
Les itérateurs
Les algorithmes
Les entrées-sorties
L’espace de noms chrono
Démonstration (à titre indicatif)Objectifs : comprendre l’intérêt d’un conteneur pour y stocker des objets et le rôle d’un itérateur. Savoir lire-écrire dans un fichier texte
Description : lecture d’un fichier texte ligne par ligne, création des objets représentés par les chaînes de caractères, mise en œuvre d’un vector pour y stocker les objets et parcours à l’aide d’un itérateur pour supprimer certains objets, tri du vector à l’aide d’un algorithme de tri et d’un foncteur

Présentation des principales nouveautés apportées par C++11/14/17/20

Mot-clé auto
Boucle for-each
Le mot-clé noexcept 
Références rvalue et applications
Expressions lambdas et applications
Initialisation uniforme
Méthodes par défaut et supprimées
Concepts et contraintes
Modules
Démonstration (à titre indicatif)Objectifs : comprendre les simplifications apportées par le mot-clé auto, la boucle for-each et les expressions lambdas
Description : ré-écriture de l’exemple précédent en utilisant une boucle for-each et auto pour afficher le contenu du vector, utilisation d’une expression lambda dans l’algorithme de tri

Les travaux pratiques sont conçus dans une approche pédagogique qui permet de valider les acquis en plus d’exemples concrets de mise en œuvre en C++. Les concepts importants sont donc toujours au cœur du TP et la trame de ces derniers fait office à la fois de synthèse réutilisable pour vos propres développements futurs mais aussi de révision lorsque vous vous replongerez dedans. Il s'agit d'une formation avec une grande part consacrée aux travaux dirigés (plus de 50% du cours).

Logo partenaire action collective de l'OPCO Atlas Votre formation C++ prise en charge jusqu'à 100% des coûts pédagogiques ! *

Depuis 2011, Atlas (ex-Fafiec) a sélectionné PLB Consultant pour vous proposer les meilleures formations autour du développement objet avec .NET, Java et C++.
-  Sessions inter-entreprise sur Paris et Lille.
-  Sessions intra-entreprise sur toute la France.

* jusqu'à 100% des coûts pédagogiques selon votre branche d'activité dans la limite des fonds mutualisés dédiés aux actions collectives et en application des critères de prise en charge en vigueur (cf conditions détaillées sur le site d'Atlas)

Avis des participants à la formation C++ : Programmation objet en C++

Note moyenne de 4.9/5(8)

Les avis figurant ci-dessous sont issus des fiches d’évaluation que remplissent les participants à la fin de la formation. Ils sont ensuite publiés automatiquement si les personnes ont explicitement accepté que nous les diffusions.

HD
5/5

Mon avis sur le formateur :

"Très bonne animation, excellente écoute sur les questions et pas de défaut de réponses."

Ce que j'ai le plus apprécié :

"Bon partage d'écran et bon accès aux fichiers en temps réel."

BAGGA Amine
5/5

Mon avis sur le contenu du stage :

"Très accentué sur les principes de l'orienté objet"

Mon avis sur le formateur :

"Pédagogue, énorme maîtrise du C++ et de l'orienté objet, c'est un excellent formateur"

PE
5/5

Mon avis sur le contenu du stage :

"Le contenu est conforme à mes attentes"

Mon avis sur le formateur :

"Bon ratio théorie/pratique/retour d'expérience"

MALTESE Dominique
4/5

Mon avis sur le formateur :

"maitrise très bien son sujet A l'écoute des stagiaires"

Dorian
5/5
Sylvain
5/5

Mon avis sur le formateur :

"l'animateur est vraiment pédagogue et professionnel. les connaissances sont bien introduites et leurs assimilations sont bonnes."

Ce que j'ai le plus apprécié :

"environnement de travail."

Gérard
5/5
CY
5/5
Mon avis sur le formateur: Rappels faits le matin ont été très utiles


Formations Informatique
et Management
en ligne à ce jour

+
Stagiaires dans nos salles
de cours sur
l'année

%
De participants satisfaits
ou très satisfaits de nos
formations


Formateurs experts
validés par
PLB