TP "Objets"

Page Home (contact) Retour TPs

Support de cours sur les objets


Objectifs de ce TP

Introduction à la notion d'objet et à la programmation orientée objet. Écrire ses propres classes.


Situation à modéliser

Les classes de ce TP modélisent les QCM (questionnaires à choix multiples). Un QCM contient plusieurs questions. Une question est représentée par un texte qui pose la question et par plusieurs réponses possibles (les choix multiples). Ces réponses possibles peuvent être des bonnes réponses ou des mauvaises réponses.

Le programme principal affiche les questions en numérotant les réponses possibles. L'utilisateur indique quelle réponse il choisit. Lorsque toutes les questions ont été posées, le programme donne une note à l'utilisateur. Pour commencer, choisissez la notation suivante : chaque bonne réponse compte 1 point ; la note est la moyenne des réponses multipliée par 20, et arrondie à l'entier le plus proche.

Les classes que vous allez écrire devront pouvoir faire fonctionner cette classe Main. Pour vous aider, voici la javadoc de l'application.

Vous pouvez tester l'application en récupérant ce fichier qcm.jar (format de distribution des applications Java que vous étudierez dans le prochain cours sur Java) et en lançant l'application par "java -jar qcm.jar".


Classe Question

Écrivez une classe Question représentant une des questions avec les réponses possibles. Cette classe, comme toutes les classes de ce TP appartient au paquetage du.qcm. Vous supposerez qu'il n'y a qu'une seule bonne réponse. Vous conserverez l'indice de la bonne réponse dans l'état de la question.

Pour ranger les réponses à la question vous utiliserez la classe ArrayList<String> qui représente une liste de String, en quelque sorte un tableau de String, dont la dimension n'est pas fixe. Après sa création un ArrayList est vide ; ensuite vous pouvez ajouter des éléments dans la liste par la méthode add. Le premier élément ajouté aura l'indice 0, le 2ème l'indice 1, et ainsi de suite. Voici quelques exemples d'utilisation de cette classe :

// Création de la liste des réponses
private ArrayList<String> reponses = new ArrayList<String>();
...
// Ajouter une réponse dans la liste
this.reponses.add("Une île de l'océan Atlantique");
// Obtenir la i + 1 ème réponse (la 1ère réponse est this.reponses.get(0)) :
String r = this.reponses.get(i);
// Nombre de réponses dans la liste : this.reponses.size();
// Parcourir toutes les réponses par une boucle for-each :
for (String reponse : reponses) {
// Parcourir toutes les réponses par une boucle for "ordinaire" :
for (int i = 0; i < reponses.size(); i++) {
  ... reponses.get(i) ...

Correction

Question.java


Classe Questionnaire

Écrivez une classe Questionnaire. Un questionnaire est une liste de questions.

Pour ranger les questions du questionnaire vous utiliserez aussi la classe ArrayList :

// Création de la liste des questions
private ArrayList<Question> questions = new ArrayList<Question>();
...
// Ajouter une question dans la liste
this.questions.add(question);
// Obtenir la i + 1 ème question :
Question q = this.questions.get(i);
// Nombre de questions dans la liste : this.questions.size();

Correction

Questionnaire.java


Test final

Testez le tout avec la classe Main donnée au début de cet énoncé, qui lance l'affichage du QCM à l'utilisateur et qui note l'utilisateur suivant ses réponses.

Ajoutez d'autres questions à ce questionnaire ou créez votre propre questionnaire.


Si vous avez fini avant les autres...

  1. Modifiez les classes pour permettre que certaines questions puissent avoir plusieurs bonnes réponses (l'utilisateur doit choisir plusieurs réponses pour avoir une réponse correcte).

    Par exemple la bonne réponse à la question suivante est de répondre "1 3 4".

    Parmi ces réponses, lesquelles sont des structures de la programmation structurée :

    1. tant que
    2. en même temps
    3. pour
    4. suite de modules
    5. jamais
  2. Une option au moment de la création du questionnaire indique si un choix "Je ne sais pas" doit être ajouté à toutes les réponses possibles.
  3. Une classe Evaluateur permet de modifier la façon d'évaluer la note donnée à l'utilisateur, sans toucher aux autres classes. (plus difficile)

Retour TPs