Code::Blocks
03-03
2013

Langages à Objets Avancés - Cours de programmation C++

Informations générales

Dans ce cours de langages à objet (qui est en réalité un cours de programmation objet en langage C++ voire un cours de C++), nous nous emploierons à passer en revue les nombreuses constructions disponibles dans le langage C++, en particulier celles relatives à la programmation objet, et expliquerons en quoi elles sont fondées et donc quels usages raisonnés l’on peut en faire.

Ce cours intitulé « langages à objets avancés » est à destination d’étudiants en Master première année d’informatique de l’Université Paris Diderot et suppose la maîtrise du langage C et si possible la pratique élémentaire d’une programmation objet (Java par exemple).

Sont fournis ici, différents supports pédagogiques : cours, travaux pratiques, suppléments documentaires et annales.

Les cours

  • Cours n°1 - Introduction
  • Cours n°2 - Sweet C++, constantes, allocation dynamique — new/delete, surcharge de fonctions, espaces de noms - namespaces -, références
  • Cours n°3 - Le paradigme objet, analyse, conception, modélisation, diagrammes, notation UML, généralisation/spécialisation, composition, agrégation, association
  • Cours n°4- Entrons dans la classe, type concret, construction/destruction, initialisation, constructeur de copie, passage par valeur, passage par référence, objets constants, attributs constants
  • Cours n°5 - Restons en classe, objets volatiles, volatiles-constants — sic! —, this, membres statiques, contrôle d’accès, privé, public, les amitiés — friend —, initialisation de membres de classe
  • Cours n°6 - De la modélisation à la représentation ou encore, du modèle aux classes : implémentation C++ des associations, composition, agrégations, classes d’association
  • Cours n°7 - Spécialisation — Héritage, la spécialisation
  • et sa réalisation par héritage, dérivation publique, constructeurs, destructeurs, redéfinition vs surcharge, retour sur le contrôle d’accès et la protection, la relation d’amitié, changement de domaine, compatibilité des types, copie et héritage
  • Cours n°8 - Factorisation, la factorisation conceptuelle, généralisation, factorisation d’implémentation, classes abstraites, classes partielles, implémentation partielle, méthodes virtuelles, destructeurs virtuels, dynamic_cast, RTTI
  • Cours n°9 - Héritage multiple, l’héritage multiple comme réalisation d’une composition, l’héritage multiple comme réalisation de la généralisation multiple)
  • Cours n°10 - Surcharge d’opérateur, LOVE=TOI+MOI
  • Cours n°11 - Modèles et généricité, les modèles et la généricité modèles de classes, modèles de fonctions, classes génériques, templates
  • Cours n°11,5 - Design Patterns, les designs patterns et quelques-unes de leur implémentation en C++
  • Cours n°12 - Exceptions, les exceptions, erreurs, traitement des erreurs, incident, capture d’une exception, parcours d’une exception, constructeurs et exceptions, destructeurs et exceptions, exception-safety, function-try-block
  • Cours n°13 - STL, la Standard Template Library (aka STL) une présentation de divers template utiles… Conteneurs, algorithmes, itérateurs, flux d’entrées/sorties…
  • Cours n°13,5 - Techniques avancées, les idiomes traits, policy, SFINAE et CRTP
  • Cours n°14 - Méta-programmation, C++ avancé, ou comment calculer des types. Une présentation de la méta-programmation à travers les templates et leur usage en vue d’obtenir des calculs à la compilation.

Les Travaux Pratiques

Vous trouverez ici, les supports pour l’année 2012—2013. Les séances sont assurées par Khouloud El zine abidine et Christian Konrad :

Les sujets de partiel, examen et projet

Vous trouverez ici les sujets et partiel, examen et projet pour l’année 2012—2013.

Note (importante) : les projets ne peuvent être effectués que par groupe projet de deux ou trois étudiants. D’autre part, il vous est demandé de bien vouloir envoyer la composition de vos groupes projet par courrier au responsable du cours Jean-Baptiste Yunès avant le vendredi 14 décembre 2012. La soutenance aura lieu le Lundi 21 Janvier 2013…

Les annales

Quelques anciens supports…

2009—2010 :

2010—2011 :

2011—2012 :

Les suppléments documentaires