Programmation Orientée Objet

Présentation

Le cours de Programmation Orientée Objets (POO) fait suite aux cours Bases de la Programmation Impérative et Algorithmique et structures de données de première année. Voir la page descriptive du cours sur le site de l'école.

Les grands principes de la POO seront étudiés, ainsi que leur mise en pratique en Java:

Organisation

1 séance de 1h30 heure par semaine, réparties en 4 séances de cours/TD et 7 séances en salle machine.

Évaluation

Contrairement à l'examen final, la note obtenue en TP ne se rattrape pas en session 2.

Ressources documentaires du Cours

Fiches de références

Ces différentes fiches reprennent les notions fondamentales vues en cours. Elles ont débuté leur existence en 2016 et sont donc encore imparfaites. Elles s'améliorent d'année en année grâce à vos retours. Merci donc de continuer à nous envoyer vos remarques. Les versions Markdown sont disponibles (Cliquez sur les boutons MD correspondants), vous pouvez utiliser ce format pour soumettre vos suggestions d'évolutions à votre enseignant.

New! Breaking news! (06/06/2020) Le mot clé protected au service d'un petit mammifère... Comme quoi, il n'est pas vain de lire ces fiches de POO, continuez !

Accéder à la page d'accueil des fiches

Fiche #0 − Introduction à la POO et Java Consulter Md
Fiche #1 − Classes et objets -- indispensable Consulter Md
Fiche #2 − Un mot sur la notion de paquetage Consulter Md
Fiche #3 − Héritage -- indispensable Consulter Md
Fiche #4 − Exceptions Consulter Md
Fiche #5 − Polymorphisme, liaison dynamique -- indispensable Consulter Md
Fiche #6 − Abstraction, interfaces -- indispensable Consulter Md
Fiche #7 − Introduction à la notation UML Consulter Md
Fiche #8 − Collections Java -- indispensable Consulter Md
Fiche #9 − Spécificités de Java 8 (λ, Streams) Consulter Md

Enoncés & Corrections

Séance 1 (TP) : classes et objets

Les fiches de références utiles pour la séance
0. Introduction à la POO et Java Consulter
1. Classes et Objets Consulter
Le sujet de TP
TD/TP Rationnels (I) Télécharger
Les ressources sur lesquelles vous pouvez vous appuyer
Présentation d'introduction (PDF) Télécharger
Exercices d'introduction (PDF) Télécharger
Exercices d'introduction (EPUB) Télécharger
Sources .java correspondants Télécharger

Séance 2 (TP) : classes et objets

Les fiches de références utiles pour la séance
0. Introduction à la POO et Java Consulter
1. Classes et Objets Consulter
Sujet et ressources du TP
TD/TP Rationnels (I) Télécharger
TD/TP Rationnels (I) − proposition de correction Télécharger
TD/TP Rationnels (II) Télécharger
La documentation et le TD sur l'IDE Eclipse Télécharger
Les fichiers sources du TD sur l'IDE Eclipse Télécharger
TD/TP Rationnels (II) − proposition de correction (version avec copie légère) Télécharger

Séance 3 (CTD) : classes et objets

Les fiches de références utiles pour la séance
0. Introduction à la POO et Java Consulter
1. Classes et Objets Consulter
Ressources de la séance de CTD
Fiche exercice Télécharger

Séance 4 (TP) : héritage

Les fiches de références utiles pour la séance
3. Héritage Consulter
Sujet et ressources du TP
TP Héritage : Zoologie Orientée Objet Télécharger
Code source de la classe Zoo Télécharger
TestHeritage.java Télécharger
Une proposition de correction du Zoo (avec abstraction) Télécharger

Séance 5 (TP) : héritage, polymorphisme, abstraction

Les fiches de références utiles pour la séance
3. Héritage Consulter
5. Polymorphisme, liaison dynamique Consulter
6. Abstraction, interfaces Consulter
Sujet et ressources du TP
TP abstraction (I) : Express yourself! Télécharger
Sources .java correspondants (Test*.java) Télécharger
Pour ceux qui veulent faire du TDD : les slides... Télécharger
Pour ceux qui veulent faire du TDD : le point de départ (tdd_java.tar.gz)... Télécharger
Une proposition de correction des expressions Télécharger

Séance 6 (CTD) : héritage, polymorphisme, abstraction

Les fiches de références utiles pour la séance
3. Héritage Consulter
5. Polymorphisme, liaison dynamique Consulter
6. Abstraction, interfaces Consulter
Rsssources associées à la séance
TD séance 6 (exercices) Télécharger

Séance 7 (TP) : héritage, polymorphisme, abstraction, interfaces

Les fiches de références utiles pour la séance
3. Héritage Consulter
5. Polymorphisme, liaison dynamique Consulter
6. Abstraction, interfaces Consulter
Sujet et ressources du TP
TD/TP abstraction (II) : interfaces, suite des expressions Télécharger
Source de TestInterfaceEvaluable.java Télécharger
Une proposition de correction des expressions évaluables Télécharger

Séance 8 (TP) : collections

Les fiches de références utiles pour la séance
8. Collections Télécharger
Sujet et ressources du TP
TD/TP Collections : représentation d'un graphe orienté Télécharger
Le code de départ : Graphe.java et TestGraphe.java Télécharger
Une proposition de correction (codage avec successeurs uniquement) Télécharger

Séance 9 (CTD) : collections

Les fiches de références utiles pour la séance
8. Collections Télécharger
Ressources associées à la séance
Collections : des slides avec exercices Télécharger

Séance 10 (TP) : collections (séance de conception)

Les fiches de références utiles pour la séance
8. Collections Télécharger
Ressources associées à la séance
TD : Gestionnaire de batch Télécharger
Le code de départ et les tests Télécharger

Séance 11 (TP) : récapitulatif général

Les fiches de références utiles pour la séance

Cette séance étant relativement libre, vous pouvez en profiter pour relire toutes les fiches de référence marquées comme étant indispensables et vous assurer que vous en maîtrisez le contenu.

Si c'est le cas (et uniquement si c'est le cas !), vous pouvez également en profiter pour lire les quelques fiches de références non indispensables mais utiles, à savoir :

2. Un mot sur la notion de paquetage Consulter
4. Exceptions Télécharger
7. Introduction à la notation UML Télécharger
9. Spécificités de Java 8 (λ, Streams) Télécharger
Ressources associées à la séance
Allez hop, je m'entraîne : les quiz Télécharger
Allez hop, je m'entraîne : les quiz (version SEOC) Télécharger

TP en temps libre

Sujet et ressources

TP en temps libre : Simulation d'une équipe de robots pompiers

Il est demandé de réaliser le TP par équipes de trois étudiants.
Date de rendu le vendredi 18 novembre 2022.

Note importante : En cas de retard dans le rendu du TPL, nous appliquons la politique suivante. 2 points de moins par 24h de retard. Toute journée de retard entamée est due. La même politique s'appliquera (de manière cumulative) sur l'évaluation par les pairs.

Amusez-vous bien!

Évaluation par les pairs

Pour l'évaluation du TPL, nous allons, comme l'an dernier, mettre en place un système d'évaluation par les pairs.

Pour l'évaluation par les pairs, suivre le lien suivant https://eval.ensimag.fr/pairs/. Attention vous devez le faire depuis un réseau de l'école (soit dans une salle machine, soit via le VPN).

Date de rendu des évaluations le vendredi 2 décembre 2022.

Si vous rencontrez des difficultés à exécuter le travail que vous avez à évaluer, voilà quelques conseils:

Environnement de travail

Par ordre de préférence (mais également de complexité décroissante)
  1. Votre machine avec la JDK >=1.8 (dès la première séance), et Eclipse IDE (à partir de la séance 3).
  2. Votre machine avec la machine virtuelle de l'école installée pour retrouver le même environnement que celui installé à l'école.
  3. Votre machine avec un accès à une machine de l'école via novnc
  4. Une machine de l'école, que vous nettoyez avant son utilisation

Annales examens

Liens

Le langage Java :

Jeu de transparents de Philippe Genoud :

Transparents sur les collections (Catherine Oriat) :

Bibliographie :