Exercices de programmation orientée objets en Java
Approche : programmation dirigée par les tests, refactoring.
Prérequis : algorithmique de base.
Les TP
- TP 1 : Le monde des Lyumines
- TP 2 : Le monde des Lyumines (suite)
- TP 3 : Les files bornées
- TP 4 : Les listes
- TP 5 : Les listes (suite)
- Sujet
- Corrigé pour les sujets 4 et 5 : Liste.java, TestListe.java.
- TP 6 : Les Lyumines s'invitent pour le thé
- Sujet
- Corrigé : Lyumine.java, Lieu.java, Maison.java, TestSamovar.java.
- TP 7 : Les ensembles (utilise les listes du TP 5)
- Sujet
- Corrigé : Ensemble.java, Test.java. Utilise les listes du TP 5 ( Liste.java).
- TP 8 : Les oeufs en chocolat (utilise les ensembles du TP 7)
- Sujet
- Corrigé :
OeufEnChocolat.java,
TestOeufEnChocolat.java.
Utilise les ensembles du TP 7, augmentés de la méthode "iterator" : Ensemble.java.
Ces ensembles utilisent toujours les listes du TP 5 ( Liste.java).
- TP 9 : Les entiers en chocolat (utilise les oeufs en chocolat du TP 8)
- Sujet
- Corrigé : Entier.java, Test.java. Utilise les oeufs en chocolat du TP8 (OeufEnChocolat.java), qui utilisent les ensembles du TP 8 (Ensemble.java), qui utilisent les listes du TP 5 (Liste.java).
- TP 11 : Refactoring
- Sujet
- Corrigé : GrapheDesConnaissances.java, qui peut être testé avec TestGrapheDesConnaissances.java.
- TP 12 : Les matrices creuses
- Sujet
- Corrigé : Matrice.java, qui peut être testé avec TestMatrice.java.
Les TD
- TD 1 : Les nombres complexes
- Tout d'abord, la programmation orientée objet est expliquée à l'aide d'une comparaison avec le langage C. Voici la classe Compteur en Java ; puis sa "traduction" en C : compteur.c.
-
Enfin, un exercice est donné :
- Sujet : Les nombres complexes
- Corrigé : NombreComplexe.java
- TDs 2 et 3 : Les piles de flottants et la calculette dc
- Sujet
- Corrigé : PileDeFlottants.java, DC.java
- TD 4 : Les expressions arithmétiques et leur évaluation
- Sujet
- Corrigé : ExpArith.java, TestExpArith.java
- TD 5 : Les piles de Lyumines
- Sujet
- Corrigé :
PileDeLyumines.java,
TestPileDeLyumines.java.
La classe PileDeLyumines utilise la classe Lyumine écrite en TP : Lyumine.java.
- TD 6 : Villes et routes
- Sujet
- Corrigé :
Ville.java,
Route.java,
VillesEtRoutes.java.
La classe Ville utilise la classe Liste écrite en TP : Liste.java.
- TDs 7 et 8 : Bestiaire
- Corrigé : Lapin.java. TestLapin.java, Animal.java, Poisson.java, Mammifere.java, Chien.java, Homme.java.
- Sujet
- Corrigé : GrapheDesConnaissances.java
- Sujet
- Corrigé :
Pile.java,
TestPile.java,
Entier.java,
TestEntier.java.
La classe Pile utilise la classe Liste écrite en TP : Liste.java.
- Sujet
- Corrigé : Vrai.java, Faux.java, File.java, CollierDeBooleens.java.
Projet : le Rubik's cube
- Sujet
- Les classes fournies : Face.java, Colour.java, Axis.java
- Un corrigé : Piece.java, RubiksCube.java, TestRubiksCube.java
Remerciements
-
Aux étudiants
Ces exercices ont été utilisés lors des travaux dirigés et travaux pratiques associés au cours "Algorithmique et programmation orientées objets", commun aux étudiants de DEUG 2ème année Mathématique-Informatique ayant choisi l'option, et aux étudiants d'IUP 1ère année Génie Mathématique et Informatique (GMI), à l'université Louis Pasteur de Strasbourg (années 2000-01, 2001-02, et 2002-03.) Les retours des étudiants ont permis l'amélioration des sujets. -
Aux co-auteurs
- Marcel Bosc a conçu les sujets des TDs no 1, "Les nombres complexes", et no 6, "Villes et routes".
- Daniel Wagner a conçu les exercices des TDs nos 7 et 8, "Bestiaire".
-
Aux inspirateurs
Les Lyumines doivent beaucoup à :- Tove Jansson, pour les Moumines
- Peyo, pour les Schtroumpfs
L'ensemble des sujets et corrigés
L'ensemble des sujets (au format LaTeX2e) et des corrigés (en Java 2) pour les TDs, les TPs, et le projet RubiksCube : tds_tps_et_projet_APOO_2002-03.tar.gz (140K).
Commentaires
- Les corrections sont écrites en Java 2.
-
Beaucoup de sujets sont orientées
"structures de données", car :
- les exercices mettent l'accent sur la distinction interface/implantation, qui est un des fondements de la notion de structure de données ;
- c'est une bonne chose d'enseigner la notion de structure de données.
- L'accent mis sur la distinction interface/implantation motive des sujets comme les entiers en chocolat dans le TP 9 (en clair, une implantation des entiers avec le codage de von Neumann) ou les entiers en base 1 dans le TD 10. Dans ces deux cas, l'implantation est volontairement inefficace, alors que l'interface est parfaitement normale.
- Aucun exercice ne traite d'interfaces graphiques avec Java, et ce en raison de la non-trivialité de la programmation par événements (pour une première approche de la programmation orientée objets).
- Les sujets sont conçus pour des séances de deux heures.