Descriptif
L'object du cours IN204 est de présenter les différents aspects de la programmation orientée objet et d'étudier leur mise en application en utilisant au mieux les constructions offertes par deux des langages de programmation les plus répandues que sont C++ et Java.
Le cours s'architecture en 3 grands blocs :
-. la présentation des concepts objets : la généricité, la spécialisation ou déspécialisation, la sérialisation ainsi que les méthodes et paradigme de programation comme les modèles objets (objet models) les patrons de conception (design patterns). La modélisation dans des langages de modélisation comme UML sera rapidement abordé.
-. la présentation des constructions offertes par les différents langages de programmation objet, l'utilisation et la mise-en-ouvre des différents concepts.
-. un projet permettant aux étudiants d'aller de la modélisation d'un problème à l'implantation en C++ en utilisant les notions précédemment acquises.
Objectifs pédagogiques
Etre capable de s'appuyer sur les modèles objet pour mettre en œuvre des méthodologies pertinentes d'architecturation et de codification de logiciels, permettant de garantir des niveaux de qualité, de confiance et de pérennité ;
Etre capable de mettre en œuvre différents paradigmes de programmation, existants ou à venir, dans différents langages de programmation ;
Etre capable de concevoir, implanter et qualifier un projet en C++, C# ou Java.
effectifs minimal / maximal:
10/25Diplôme(s) concerné(s)
- Master 1 Parisien de Recherche Opérationnelle
- Diplôme d'Ingénieur de l'Ecole Nationale Supérieure de Techniques Avancées
Parcours de rattachement
Format des notes
Numérique sur 20Littérale/grade européenPour les étudiants du diplôme Master 1 Parisien de Recherche Opérationnelle
Pour les étudiants du diplôme Diplôme d'Ingénieur de l'Ecole Nationale Supérieure de Techniques Avancées
Vos modalités d'acquisition :
Projet et Soutenance d'un projet.
Le rattrapage est autorisé (Max entre les deux notes écrêté à une note seuil)- le rattrapage est obligatoire si :
- Note initiale < 6
- le rattrapage peut être demandé par l'étudiant si :
- 6 ≤ note initiale < 10
- Crédits ECTS acquis : 4 ECTS
- Scientifique acquis : 4
Le coefficient de l'UE est : 2
La note obtenue rentre dans le calcul de votre GPA.
L'UE est évaluée par les étudiants.
Programme détaillé
1. CM: Présentation de la programmation objet. Notion d'objets de classe. Création, instanciation et finalisation/destruction.
2. TD: <a href="http://perso.ensta-paristech.fr/~paun/ENSTA/IN204/TD01/TD01.html">TD01</a> [<a href="http://perso.ensta-paristech.fr/~paun/ENSTA/IN204/TD01/TD01.pdf">pdf</a>] -> Elements de solution [<a href="http://perso.ensta-paristech.fr/~paun/ENSTA/IN204/TD01_elements_sol.zip">zip</a>]
Présentation des syntaxes C++ et Java. Introduction aux objets. Ecriture de classes en C++ et en Java.
<a href="http://perso.ensta-paristech.fr/~paun/ENSTA/IN204/OOP_cpp_java_charp.html">Glossaire_POO</a> [<a href="http://perso.ensta-paristech.fr/~paun/ENSTA/IN204/OOP_cpp_java_charp_md.pdf">pdf</a>]
3. CM: Introduction de l'héritage. Opposition entre héritage simple et multiples (Problèmes de l'héritage multipe)
4. TD: <a href="http://perso.ensta-paristech.fr/~paun/ENSTA/IN204/TD02/TD02.html">TD02</a> [<a href="http://perso.ensta-paristech.fr/~paun/ENSTA/IN204/TD02/TD02.pdf">pdf</a>] -> Elements de solution [<a href="http://perso.ensta-paristech.fr/~paun/ENSTA/IN204/TD02/TD02_sol.tar.gz">.tar</a>]
Hiérarchie de classes en C++, C# et Java.
Introduction du polymorphisme.
5. CM: <a href="http://perso.ensta-paristech.fr/~paun/ENSTA/IN204/TD03/Lecture03.pdf">Lecture03</a>
Polymorphisme et surchages.
6. TD: <a href="http://perso.ensta-paristech.fr/~paun/ENSTA/IN204/TD03/TD03.html">TD03</a> [<a href="http://perso.ensta-paristech.fr/~paun/ENSTA/IN204/TD03/TD03.pdf">pdf</a>]
Etude de l'utilisation du polymorphisme. Evaluation de l'impact sur la conception et les performances.
7. CM: La programmation par contrat. Version native (Java, C#) par rapport à la version ad hoc (C++)
8. TD: <a href="http://perso.ensta-paristech.fr/~paun/ENSTA/IN204/TD04/TD04.html">TD04</a> [<a href="http://perso.ensta-paristech.fr/~paun/ENSTA/IN204/TD04/TD04.pdf">pdf</a>]
Définition d'interface. Classe virtuelle en C++ et interface en C#/Java. Différence dans les deux approches.
9. CM: La robustesse des applications: Comment récupérer d'une violation d'un contrat
10. TD: <a href="http://perso.ensta-paristech.fr/~paun/ENSTA/IN204/TD05/TD05.html">TD05</a> [<a href="http://perso.ensta-paristech.fr/~paun/ENSTA/IN204/TD05/TD05.pdf">pdf</a>]
Les exceptions
11. CM: La notion de pattern. Définition des patterns. Définition d'un zoo de patterns.
12. TD: La généricité
<a href="http://perso.ensta-paristech.fr/~paun/ENSTA/IN204/TD06/TD06.html">TD06</a> [<a href="http://perso.ensta-paristech.fr/~paun/ENSTA/IN204/TD06/TD06.pdf">pdf</a>]
13. CM: Premiers pas vers les architectures objets. La notion de composant.
14. TD: Utilisation par spécialisation de patterns prédéfinis et implantation
15. CM: Modèle d'architectures objets
16. TD: Définition de composants en C#. Exportation et interopérabilité.
17. CM: Parallélisme et Programmation Objet. Apport des objets dans la mise en œuvre de la concurrence.
18. TD: La STL
19. CM: Programmation distribuée & Programmation objets
20. TD: Programmation système & parallèle
21. CM: Dernières évolution des langages au regard de C1y et de C# 5.0
22. TD: Expérimentation des nouvelles approches + Présentation des projets
23. TD: Séance consacrée au projet
24. TD: Séance consacrée au projet
25. TD: Séance consacrée au projet