☀️ C'est l'été chez ITTA ! Profitez de 10% de réduction jusqu'au 31 juillet sur une sélection de formations 🌴

Formation : Programmation Orientée Objet en C++ Avancé

Ref. CPP-02
Durée :
5
 jours
Examen :
Non certifiant
Niveau :
Avancé
Financement :
Eligible

Formation Programmation Orientée Objet en C++ Avancé

La Formation Programmation Orientée Objet en C++ avancé s’adresse aux développeurs souhaitant maîtriser pleinement les techniques avancées du langage. Ce cours vous permettra de renforcer vos bases, tout en découvrant des méthodes modernes pour concevoir des applications performantes et maintenables. Vous apprendrez à exploiter la puissance de la POO, des modèles et de la bibliothèque standard STL, tout en appliquant des bonnes pratiques reconnues dans l’industrie.

Développez vos compétences en C++ avancé

Grâce à cette formation Programmation Orientée Objet en C++, vous développerez votre capacité à structurer efficacement votre code et à optimiser son exécution. Vous comprendrez comment gérer la mémoire, utiliser les pointeurs intelligents, manipuler les exceptions et appliquer des patterns de conception éprouvés. Les différentes sections du programme vous guideront dans l’application de concepts avancés tels que l’héritage multiple, la délégation, le découplage et les heuristiques de conception.

Profils des Participants

  • Développeurs logiciels
  • Programmeurs C++
  • Architectes logiciels
  • Concepteurs de systèmes
  • Ingénieurs en développement embarqué

Objectifs

  • Appliquer des concepts avancés de conceptions OO
  • Être en mesure d’écrire et de maintenir des programmes C++
  • Écrire un code C++ robuste, maintenable, élégant et efficace
  • Utiliser les fonctionnalités avancées du langage de programmation C++
  • Être capable de mettre en œuvre des techniques avancées orientées objet en C++ pour réaliser des applications efficaces et flexibles
  • Avoir les compétences nécessaires pour développer des applications C++ industrielle

Connaissances Préalables

Contenu du Cours

Module 1 : Historique du langage et C++ 11/14

  • Histoire de C++
  • Versions
  • Nouveau dans TR1
  • Nouveau en C++ 11
  • Nouveau en C++ 14

Module 2 : Examen de la langue et bonne pratique: Partie I

  • Programmation orientée objet
  • Constructeurs et destructeurs
  • New et delete

Module 3 : Héritage de base

  • Interface et implémentation
  • Héritage de Type
  • Héritage d’implémentation
  • Utilisation correcte de C++ 11 final et override
  • Destructeurs virtuels: quand et pourquoi?
  • Directives d’héritage

Module 4 : Utilisation correcte des fonctionnalités linguistiques bien connues

  • Pointeurs vs. Références vs Valeurs
  • Bonne utilisation de const
  • Utilisation appropriée des fonctions en ligne
  • Bonne utilisation de static
  • Utilisation appropriée des paramètres par défaut
  • Bonne utilisation de friend
  • Utilisation appropriée du namespace
  • Le moyen C++ du cast
  • Utilisation appropriée de la surcharge de l’opérateur
  • Constructeur de copie: pourquoi / quand?
  • Opérateur d’affectation: pourquoi / quand?
  • La loi des trois grands

Module 5 : Exceptions

  • Gestion traditionnelle des erreurs
  • Traitement d’erreur orienté objet
  • throw, try and catch
  • Conception de hiérarchies d’exceptions
  • Utilisation appropriée de rethrow
  • Utiliser unexpected
  • Pièges des exceptions
  • Bonnes pratiques sur les exceptions

Module 6 : Modèles

  • Définition des classes de template
  • Implémentation des classes de modèles
  • Classes paramétrées
  • Modèles et paramètres non-types
  • Directives de template
  • Modèles et fonctions simples
  • Fonction de template C++

Module 7 : Bibliothèque de modèles standard (STL)

  • Chaîne de caractères STL
  • Composants STL
  • Conteneurs de séquence
  • Utilisation d’itérateurs en STL
  • Exemple d’algorithmes
  • Initialisation des conteneurs
  • Profils de performance des conteneurs de séquences

Module 8 : Algorithmes STL

  • STL contre Boost
  • Paramétrage des algorithmes
  • Utiliser des fonctions
  • Utilisation d’objets de fonction
  • Utilisation d’expressions Lambda
  • Bibliothèque d’algorithmes sélectionnés
  • Algorithmes contributifs

Module 9 : Conteneurs associatifs STL

  • Set
  • Multiset
  • Map
  • Multimaps

Module 10 : Functeurs STL, Allocators et plus

  • Exception standard
  • Functors
  • Objets de fonction fournis par la bibliothèque
  • Utilisation d’objets de fonction STL et de liaisons
  • Négateurs
  • Allocateurs
  • Nombre complexe
  • Smart Pointers

Module 11 : Efficacité : Objets temporaires

  • Objets temporaires : le problème
  • Diverses techniques pour éviter les temporaires
  • Chaîne STL : comment éviter la création de temporaires
  • C++ 11 : Déplacer la sémantique
  • Techniques diverses pour éviter les temporaires

Module 12 : Gestion de la mémoire

  • Comment C++ utilise-t-il la mémoire?
  • Directives de base
  • Implémentation de singletons en C++
  • Utilisation efficace des pointeurs intelligents
  • Surcharge new et delete
  • Gestion de la mémoire
  • L’importance de la disposition des données

Module 13 : Mémoire vive / froide

  • Techniques d’efficacité diverses
  • Préoccupations de conception
  • Flexibilité vs performance
  • Évaluation lazy
  • Évaluation eager
  • Copier sur les techniques d’écriture
  • Mise en page des données revisitée
  • Matériel moderne et pipelines de cache
  • L’effet des structures de données et des algorithmes
  • Postcondition et C++
  • Profils d’efficacité des bibliothèques
  • STL et Performance
  • Latence
  • Coût et avantages des threads
  • Programmation asynchrone
  • Futures

Module 14 : Délégation

  • Concept de délégation
  • Délégation en C++
  • Délégation simple
  • Délégation statique
  • Délégation de super classe
  • Délégation de sous-classe
  • Problèmes avec la délégation de sous-classe en C++
  • Délégation d’objet
  • Modèle de stratégie
  • C++ et Stratégie
  • Modèle d’état
  • C++ et état
  • Conception de composite
  • Composite et délégation
  • Autres modèles de délégation

Module 15 : Découplage

  • Qu’est-ce que le couplage?
  • Types de couplage
  • Couplage d’identité
  • Couplage d’identité: cycle de vie de l’objet
  • Changement d’identité
  • Type de couplage
  • Couplage d’implémentation
  • Interfaces et implémentations
  • Découplage par l’exemple

Module 16 : Héritage avancé

  • Héritage multiple des interfaces
  • Héritage multiple de l’implémentation
  • Propriétés partagées
  • Résoudre l’ambiguïté
  • Héritage virtuel
  • Multi méthodes
  • Double Dispatch
  • Utilisation de RTTI
  • Règles et lignes directrices
  • Héritage des méthodes Baseclass
  • Changement de méthodes
  • Contrats et héritage
  • Contrats et sous-typage
  • Variations d’arguments de méthode
  • Règles pour les arguments de méthode
  • Règles pour changer les types de retour
  • Annulations de méthodes

Module 17 : Heuristiques de conception

  • Directives de conception orientées objet
  • Refléter la vue du client
  • Vote
  • Interfaces express à travers des objets
  • Objets de valeur
  • Invariants de classe
  • Classes de base abstraites
  • Classes et interfaces
  • Interfaces de conception entre les classes de base et dérivées
  • Cohésion entre Classes

Documentation

  • Support de cours numérique inclus

Lab / Exercices

  • Pendant le cours, les participants sont encouragés à participer activement à l’expérience d’apprentissage en exécutant des exemples de fichiers et en effectuant des tâches de codage pendant les labs
  • Chaque session de lab vous permet de comparer votre solution à celle de l’instructeur

Cours complémentaires

Financement Eligible

ITTA est partenaire d’un fonds de formation continue destiné aux travailleurs temporaires. Ce fonds peut subventionner cette formation, sous réserve que vous soyez assujetti(e) à la convention collective de travail (CCT) « Location de services » et que vous remplissiez certaines conditions, notamment avoir travaillé au moins 88 heures au cours des 12 derniers mois.

Informations Additionnelles

Approfondir les concepts clés de la programmation orientée objet

La programmation orientée objet en C++ ne se limite pas à la création de classes et d’objets. Elle implique une réflexion approfondie sur la structure et la réutilisabilité du code. Dans un contexte professionnel, comprendre l’héritage, le polymorphisme ou encore la délégation permet de concevoir des applications plus robustes et plus évolutives. Ce type de conception facilite également la maintenance des projets à long terme, un atout majeur pour les environnements où la performance et la fiabilité sont essentielles.

Exploiter les fonctionnalités modernes de C++

Le langage a beaucoup évolué avec les versions C++11 et C++14, introduisant des améliorations qui changent la manière de coder. Les développeurs peuvent aujourd’hui tirer parti des fonctions lambda, des pointeurs intelligents ou encore du déplacement de sémantique pour optimiser l’exécution. Ces ajouts ne sont pas uniquement des détails techniques, ils influencent directement la qualité et la lisibilité du code produit.

Optimiser la gestion de la mémoire

La gestion efficace de la mémoire reste un élément central du développement en C++. Savoir utiliser correctement les pointeurs intelligents ou mettre en place des techniques de réduction des objets temporaires permet de limiter les fuites mémoire et d’augmenter la stabilité des programmes. Ces compétences sont essentielles pour les projets où la performance et la consommation de ressources sont surveillées de près.

Maîtriser la bibliothèque standard et les algorithmes

La bibliothèque standard (STL) fournit un ensemble riche de conteneurs, d’itérateurs et d’algorithmes. Maîtriser ces outils permet d’écrire du code plus concis, plus clair et souvent plus rapide que des implémentations maison. L’utilisation judicieuse de ces composants garantit une meilleure compatibilité et une maintenance plus simple, tout en respectant les standards de développement modernes.

Utiliser les modèles et templates pour plus de flexibilité

Les modèles C++ offrent une approche puissante pour créer du code générique et réutilisable. Bien utilisés, ils réduisent la duplication et augmentent la cohérence entre différentes parties d’une application. Cela nécessite cependant de comprendre leurs subtilités, comme les paramètres non-types ou les spécialisations de fonctions, afin d’éviter les erreurs fréquentes et de maintenir de bonnes performances.

Améliorer les performances et la conception logicielle

Au-delà de la syntaxe, un développement efficace en C++ repose sur des choix architecturaux réfléchis. Réduire le couplage, privilégier la cohésion des classes et appliquer des heuristiques de conception adaptées contribuent à la stabilité et à la maintenabilité du code. Les décisions prises lors de la phase de conception ont un impact direct sur la qualité et la durée de vie d’un projet.

Pourquoi cette formation en POO C++ est un atout pour les professionnels

Les compétences développées dans cette formation sont recherchées dans de nombreux secteurs, allant du développement embarqué à la simulation haute performance. La maîtrise des aspects avancés de la programmation orientée objet en C++ permet aux professionnels d’apporter des solutions optimisées et durables, tout en répondant aux exigences croissantes de performance et de sécurité des logiciels modernes.

FAQ

Cette formation convient-elle aux débutants en C++ ?
Non, elle s’adresse aux développeurs ayant déjà une bonne maîtrise des bases du langage et de la POO.

Quel est l’avantage de maîtriser C++11 et C++14 ?
Ces versions apportent des fonctionnalités modernes qui améliorent la lisibilité, la performance et la sécurité du code.

Pourquoi apprendre la gestion avancée de la mémoire ?
Une bonne gestion mémoire évite les fuites, réduit la consommation de ressources et augmente la stabilité des applications.

Les techniques vues sont-elles applicables en dehors du C++ ?
Oui, de nombreux principes de conception orientée objet s’appliquent aussi à d’autres langages, avec quelques adaptations.

Quels sont les secteurs qui recherchent des experts en C++ avancé ?
On retrouve ces profils dans l’aéronautique, le développement de jeux vidéo, les systèmes embarqués, la finance et l’IA.

La bibliothèque STL est-elle encore pertinente aujourd’hui ?
Oui, elle reste un standard incontournable, largement optimisé et compatible avec les nouvelles fonctionnalités du langage.

Les modèles et templates sont-ils difficiles à apprendre ?
Ils nécessitent un certain investissement, mais apportent une grande flexibilité et réduisent le code répétitif.

Prix de l'inscription
CHF 3'550.-
Inclus dans ce cours
  • Formation dispensée par un expert du domaine
  • Documentation et supports digitaux
  • Badge de réussite
Mois actuel

lun15Sep(Sep 15)09:00ven19(Sep 19)17:00VirtuelVirtuel Etiquettes de sessionCPP-02

lun15Sep(Sep 15)09:00ven19(Sep 19)17:00Genève, Route des Jeunes 35, 1227 Carouge Etiquettes de sessionCPP-02

lun20Oct(Oct 20)09:00ven24(Oct 24)17:00VirtuelVirtuel Etiquettes de sessionCPP-02

lun20Oct(Oct 20)09:00ven24(Oct 24)17:00Lausanne, Avenue Mon repos 24, 1005 Lausanne Etiquettes de sessionCPP-02

lun24Nov(Nov 24)09:00ven28(Nov 28)17:00VirtuelVirtuel Etiquettes de sessionCPP-02

lun24Nov(Nov 24)09:00ven28(Nov 28)17:00Genève, Route des Jeunes 35, 1227 Carouge Etiquettes de sessionCPP-02

Contact

ITTA
Route des jeunes 35
1227 Carouge, Suisse

Horaires d’ouverture

Du lundi au vendredi

de 8h30 à 18h00

Tél. 058 307 73 00

Contactez-Nous

ITTA
Route des jeunes 35
1227 Carouge, Suisse

Faire une demande

Opening hours

Monday to Friday
8:30 AM to 6:00 PM
Tel. 058 307 73 00

Contact-us

ITTA
Route des jeunes 35
1227 Carouge, Suisse

Make a request