Informations générales
La mailing-liste de ce cours est :
. Le cours se déroule le vendredi de 11h30 à 13h30 en salle 575F. Les
travaux dirigés sont répartis en trois groupes (mercredi de 9h30 à
12h30, vendredi de 8h30 à 11h30 et de 16h30 à 19h30). Le cours sera
évalué pour 2/3 par un projet (qui n'est pas du contrôle continu donc
obligatoire). Il sera évalué pour 1/3 par un dernier TD noté (qui est
considéré comme du contrôle continu).
La page du projet est ici.
Cours introductif
Les transparents du cours
et les points abordés :
-
- Définition (informelle) des objets en programmation
-
- Messages, principe de subsomption
-
- Taxonomie des langages
-
- Problèmes de l'extensibilité fonctionnelle, des messages multiples et
du raisonnement sur les objets
Cours 2 et 3 : C++
Les transparents du cours
et les points abordés :
- - Structure d'un programme
- - Espaces de noms
- - Définition d'une classe : syntaxe, encapsulation des membres
- - Définition des constructeurs
- - Méthodes et résolutions des appels
- - Surcharge des noms des méthodes et des fonctions
- - Héritage simple et multiple
- - Classes et fonctions amies
- - Coercion implicite
- - Recouvrement du type
- - Comportement exceptionnel des objets
- - Destructeur
- - Référence
- - L'opérateur d'affectation
- - Qu'est-ce que la programmation générique ?
- - Patrons de classe et de fonction
- - Bibliothèques utiles
y
Cours 4 : modélisation objet à l'aide d'UML
Les transparents du cours
et les points abordés :
- - Cycle de vie du logiciel
- - Processus de modélisation dirigé par les cas d'utilisation
- - Diagrammes dynamiques
- - Diagrammes statiques
Cours 5 : patrons (et anti-patrons) de conception
Les transparents du cours
et les points abordés :
- - Patrons de conception de structure, comportement et création.
- - Anti-patrons de conception.
Cours 6 : étude comparée de C#, Python, Scala et O'Caml
Les transparents du cours
et les points abordés :
- - C# : analyse des variables non initialisées, structurs anonymes, fonctions de première classe, événements, propriétés, liaison tardive restreinte.
- - Python : vérification dynamique vs vérification statique.
- - Scala : traits, pattern matching.
- - O'Caml : sous-typage structurel, objet fonctionnel.
Cours 7 : programmation générique
Les transparents du cours
et les points abordés :
- - Polymorphisme d'inclusion, contra/co/in-variance.
- - Polymorphisme paramétrique.
- - Types abstraits, partiellement abstraits.
- - Patrons de conception générique.
- - Polymorphisme paramétrique borné.
- - Polymorphisme intentionnel.
Cours 8 : Contrat, tests et preuve
Les transparents du cours
et les points abordés :
- - Eiffel : précondition, postcondition, invariant.
- - Contrat à travers l'héritage.
- - Types abstraits, partiellement abstraits.
- - Vérification totale par logique de Hoare.
- - L'outil Krakatoa.
TD 1
Les personnes qui ont besoin d'une mise à niveau concernant l'utilisation
d'Emacs, de Make et d'UNIX peuvent consulter la
page suivante.
Sujet
-
Makefile
-
Correction des exercices 1 et 2
Références
À propos de la programmation orientée objet
-
"Object-Oriented Software Construction" (Broché)
de Bertrand Meyer
-
"Langages et modèles à objets.
État des recherches et perspectives"
Ouvrage coordonné par
Roland Ducournau,
Jérôme Euzenat,
Gérald Masini et
Amedeo Napoli issu des cours du CIMPA
Collection didactique #19 de l'INRIA
-
"A theory of objects" (Springer)
de Luca Cardelli et Martin Abadi
-
"Object Oriented Programming a Unified Foundation" (Birkhaüser)
de Giuseppe Castagna.
C++
Scala
O'Caml
C#
Java