Aller au contenu principal

PLB CONSULTANT : 04. C++, programmation Objet

Organisme

PLB CONSULTANT
3-5 RUE MAURICE RAVEL
92300 LEVALLOIS PERRET
Voir toutes ses formationsAutres organismes proposant cette formation

Durée

35 heures

Modalités

Formation
  • Classe virtuelle
  • Présentiel
Évaluation

Travaux pratiques. Auto-évaluation en début et en fin de formation.

Prix

Inter
La formation en Inter est dispensée pour un groupe de salariés d’entreprises différentes.
1470€ HT / personne
Intra
La formation en Intra est dispensée pour un groupe de salariés d’une seule et même entreprise.
5880€ HT / groupe
4 stagiaires minimum

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é

 

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.

 

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)

 

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

 

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)

 

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

Sessions

Filtrer les résultats
Modalités pédagogiques
Formation synchrone se déroulant avec la présence physique du (des) formateur(s) et du (des) apprenant(s) réunis dans un même lieu de formation.
Formation combinant des séquences en présentiel et des séquences à distance synchrones ou asynchrones.
Formation à distance, asynchrone, s’appuyant sur une plateforme d’apprentissage, pouvant être complétée par d’autres modalités de formation à distance (visio-conférence…)
Formation à distance, synchrone, s’appuyant sur un dispositif de visio-conférence. La classe virtuelle recrée à distance les conditions d’une formation en salle traditionnelle.
Type de formation
La formation en Inter est dispensée pour un groupe de salariés d’entreprises différentes.
La formation en Intra est dispensée pour un groupe de salariés d’une seule et même entreprise.
Options
Les compétences professionnelles visées par la formation sont validées via un test permettant d’obtenir une certification officielle.
Ces sessions ne peuvent être ni annulées ni reportées par l’organisme de formation.