L’objectif du cours est de présenter la programmation orientée objet par l’utilisation du C++. Les concepts avancés du C++ sont vus en troisième année. Les tests unitaires sont présentés et utilisés.
Plan du cours
Présentation des concepts et modèle objet, découverte de l’UML
Différences entre le C et le C++ : surcharge, paramètres par défaut / muets, const, références et gestion dynamique de la mémoire
Concepts objets et C++ de base : transposition d’une classe et manipulation basique d’objets (instanciation), constructeurs, membres de classes, std ::string, flux, conversions, encapsulation, cycle de vie des objets, liste d’initialisation, destruction, héritage simple, visibilité des membres, polymorphisme faible et fort, méthodes virtuelles, downcasting, classe abstraite, interface, agrégation et composition
Subtilités C++ : objet et méthode constants, troncature de type, constructeur de copie / de conversion, opérateur d’affectation, déclarations anticipées
Implémenter la chaine de caractères : membres, constructeurs, copie et affectation, opérateurs d’extraction [] / de redirection de flux / de concaténation, amitié
Gestions des erreurs : rappels de mécanismes classiques, exceptions, classes imbriquées, exception standard, hiérarchies des exceptions, fin d’un programme, RAII
Généricité : fonctions génériques, classes paramétrées, écriture d’une pile générique, templates et compilation
Bibliothèque standard : types de conteneurs, itérateurs, foncteurs, traits, utilisation
Compléments de C++ : héritages multiple, virtuel et privé, syntaxes templates, méthodes inline, opérateur ++, pointeurs de méthodes et namespace
La norme 2014 du langage est utilisée bien que non obligatoire (sémantique de déplacement non vue en cours)
Description des TP
Chaque séance de cours magistral est suivie par une séance de TP qui propose des exercices d’applications directes du cours. Un projet « fil rouge » sur l’ensemble des séances est proposé afin de mettre en œuvre la programmation objet C++ dans un projet de plus grande envergure.
La bibliothèque CATCH 2 permet de mettre en œuvre les tests unitaires et l’utilisation de git/gitlab est très fortement encouragée.
Connaissances requises
Cours de UNIX/C de première année, structures de données
RSE (Responsabilité Sociale et Environnementale)
Thèmes:
La problématique RSE est évoquée en cours, le langage C++ étant un des trois langages les plus économes et efficaces. https://greenlab.di.uminho.pt/wp-content/uploads/2017/10/sleFinal.pdf