|
|
L'interface Query et la classe abstraite AbstractQuery. | Query.java
AbstractQuery.java |
|
|
La classe NumericQuery. |
NumericQuery.java
|
|
|
La classe CharQuery. |
CharQuery.java
|
|
|
La classe StringQuery. |
StringQuery.java
|
|
|
La classe YesNoQuery. |
YesNoQuery.java
|
|
|
Et la classe Quiz pour terminer
! |
Quiz.java
TestQuiz.java |
Exercice 1 :
| interface Query { public void readUserAnswer(); // Effectue la saisie (classe Clavier) auprès de l'utilisateur public String getCorrectAnswer(); // Retourne la réponse de cette question public boolean isCorrect(); // Retourne vrai si l'utilisateur a correctement répondu public int getPoints(); // Retourne le nombre de points associés à cette réponse } |
| public class TestNumericQuery
{ public static void main(String args[]) { // créé une question numérique dont l'intitulé est "Combien font 2 + 2", dont la réponse est 4, et valant 1 point NumericQuery nquery = new NumericQuery("Combien font 2 + 2", 4, 1); System.out.print(nquery); // Affiche l'intitulé nquery.readUserAnswer(); // Récupére la réponse de l'utilisateur if (nquery.isCorrect()) { System.out.println("Votre réponse est bonne ! Vous avez gagné "+nquery.getPoints()+" points."); } else { System.out.println("Votre réponse est fausse ... la bonne réponse était : "+nquery.getCorrectAnswer()); } } } |
Après les questions de type numérique, les questions dont
la réponse est un caractère (type char), que vous pourrez tester
avec le programme suivant :
| public class TestCharQuery
{ public static void main(String args[]) { // créé une question dont l'intitulé est "Quelle lettre suit le 'm'", dont la réponse est 'n', et valant 2 points CharQuery nquery = new CharQuery("Quelle lettre suit le 'm'", 'n', 2); System.out.print(nquery); // Affiche l'intitulé nquery.readUserAnswer(); // Récupére la réponse de l'utilisateur if (nquery.isCorrect()) { System.out.println("Votre réponse est bonne ! Vous avez gagné "+nquery.getPoints()+" points."); } else { System.out.println("Votre réponse est fausse ... la bonne réponse était : "+nquery.getCorrectAnswer()); } } } |
| public class TestStringQuery
{ public static void main(String args[]) { // créé une question dont l'intitulé est "Un bateau, des ", dont la réponse est "bateaux", et valant 3 points StringQuery nquery = new StringQuery("Un bateau, des ", "bateaux", 3); System.out.print(nquery); // Affiche l'intitulé nquery.readUserAnswer(); // Récupére la réponse de l'utilisateur if (nquery.isCorrect()) { System.out.println("Votre réponse est bonne ! Vous avez gagné "+nquery.getPoints()+" points."); } else { System.out.println("Votre réponse est fausse ... la bonne réponse était : "+nquery.getCorrectAnswer()); } } } |
Exercice 6 :
Maintenant que l'on dispose de tous nos types de questions, nous allons
écrire la classe questionnaire qui représentera un ensemble
de questions.
pour savoir ce qu'il faut mettre dans cette classe reportez-vous à
la classe l'utilisant tout en haut de cette page
.
Quelques précisions : il n'y a que deux méthodes à
écrire : void addQuery(Query q) qui permet de
rajouter une question au questionnaire et void run()
qui lance le questionnaire (pose les questions les unes à la suite
des autres et comptabilise les points).
Dans la cette classe, il ne faudra manipuler que des objets de type
Query (i.e. l'interface) !
| secq@beckett:/tmp/Questionnaire/classes$
java TestQuiz Question: Date de la bataille de Marignan ? Reponse : 1515 Bon Question: Date de la revolution fran?aise ? Reponse : 1789 Bon Question: Premi?re election de Mitterand ? Reponse : 1981 Bon Question: En logique Faux implique Vrai ? Reponse : oui Bon Question: Dos est un systeme multi-taches ? Reponse : non Bon Question: Quelle lettre precede le m ? Reponse : l *l* *l* Bon Vous avez obtenu 12/12 |