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:
- Classes et objets, principe d'encapsulation
- Héritage et polymorphisme, abstraction, interfaces
- Collections Java: types abstraits d'ensembles d'objets et implémentations, utilisation d'une bibliothèque de composants
- Utilisation d'exceptions
- Notions d'UML et justification du paradigme orienté-objet
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
- un TP en temps libre, en trinôme (33% de la note)
- un examen final de 2h, en salle machine (67% de la note)
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.
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
Le sujet de TP
Les ressources sur lesquelles vous pouvez vous appuyer
Séance 2 (TP) : classes et objets
Les fiches de références utiles pour la séance
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
Ressources de la séance de CTD
Séance 4 (TP) : héritage
Les fiches de références utiles pour la séance
Sujet et ressources du TP
Séance 5 (TP) : héritage, polymorphisme, abstraction
Les fiches de références utiles pour la séance
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
Rsssources associées à la séance
Séance 7 (TP) : héritage, polymorphisme, abstraction, interfaces
Les fiches de références utiles pour la séance
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
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
Ressources associées à la séance
Séance 10 (TP) : collections (séance de conception)
Les fiches de références utiles pour la séance
Ressources associées à la séance
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 :
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:
- Supprimez les fichiers
.class
du répertoire bin
pour les regénerer plus tard à la main : cd codeEtudiants;find . -name "*.class" -exec rm {} \;
- Vérifiez que le fichier
gui.jar
est bien dans le répertoire bin
, sinon l'y replacez
- Recompiler le projet
find ./src -name "*.java" -exec javac -d bin -classpath bin/gui.jar:bin -sourcepath src -d bin {} \;
(éventuellement si vous avez des problèmes de compilation à cause de l'encodage des caractères vous pouvez ajouter l'option -encoding cp1252
ou -encoding utf8
)
- Lancer le programme de test en ayant identifié dans quelle classe il est présent, par exemple si le test est dans le package test.TestFinal
java -classpath bin/gui.jar:bin test.TestFinal cartes/carteSujet.map
- S'il y a une erreur par rapport au fichier map non trouvé, vous pouvez chercher dans le code s'il n'y a pas un problème de chemin par rapport à ces fichiers et corriger cette partie (suivant l'environnement d'exécution avec IDE, il peut y avoir des différence à ce niveau).
Environnement de travail
Par ordre de préférence (mais également de complexité décroissante)
- Votre machine avec la JDK >=1.8 (dès la première séance),
et Eclipse IDE (à partir de la séance 3).
- Votre machine avec la machine virtuelle de l'école installée pour retrouver le même environnement que celui installé à l'école.
- Votre machine avec un accès à une machine de l'école via novnc
- 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 :