2012
Langages à Objets Avancés - Cours de C++
Informations générales
Dans ce cours de langages à objet (qui est en réalité un cours 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°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
Voici les supports pour l’année 2011—2012, ils sont inspirés de ceux des années précédentes et ont été réalisés par Daniele Varacca Khouloud El zine abidine et Jean-Baptiste Yunès:
- TP n°1 - Introduction
- TP n°2 - Date et finances
- TP n°3 - TP3
- TP n°4 - TP4, UML
- TP n°5 - Templates
- TP n°6 - Modèles
- TP n°7 - STL+exceptions et la seconde version
Les sujets de partiel, examen et projet
Le sujet du partiel de novembre 2011 : ici
Le sujet de l’examen de Janvier 2012 : ici avec sa correction partielle :
Les sujets de projets pour l’année 2011—2012 :
- M. Strullu. Attention ce projet est exclusivement réservé aux étudiants de la section MI-MIC (Maths-Info-Crypto);
- M. Yunès;
- Mme Zine El Abidine.
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 16 décembre 2011, minuit.
Les annales
Quelques anciens supports…
2009—2010 :
- TP n°1, le code de solutions possibles : fichiers zippés (certaines solutions sont des projets Code::Blocks)
- TP n°2, le code de solutions possibles (les complexes seulement) : fichiers zippés
- TP n°3, le code de solutions possibles (juste pour les complexes) : fichiers zippés
- TP n°4, le code d’une solution possible : fichiers zippés
- TP n°5, encore Alpha du Centaure!
- TP n°6, des opérateurs…
- TP n°7, des modèles…
- Examen de Janvier 2010
- Examen de Juin 2010
2010—2011 :
- TP n°1 - Introduction
- TP n°2 - Centauriens
- TP n°3 - Centauriens are back
- TP n°4 - You Aime Elle, UML
- TP n°5 - Templates
- TP n°6 - Modèles
- Projet n°1 2010—2011, Moines et sorcières…
- Projet n°2 2010—2011, Business
- Partiel de Novembre 2010
- Examen de Janvier 2011
- Examen de Juin 2011
Les suppléments documentaires
- Standard Template Library, aka STL, la version locale
- GNU C++ library
- BOOST library
- Standard C++, en particulier le « Draft » ISO/IEC 14882:2011 (aka C++11 C++0x)