Salut, je souhaite crée du code réutilisable dans plusieurs programme. Une sorte d'"API" perso a mon humble niveau.

Ce code doit generer une question aléatoire, verifier si la réponse est bonne et surtout laisser choisir le developpeur du programme en question ce qu'il veut faire en cas de bonne ou mauvaise reponse. Le tout en étant re-utiliser de la manière la plus simple et intuitive possible.

Pour l'instant voici ou j'en suis:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import java.util.Random;
 
public abstract class ProfDeMaths {
	private String question;
	private String bonneReponse;
 
	public ProfDeMaths() {
	}
 
	abstract void siBonneReponse();
 
	abstract void siMauvaiseReponse();
 
	public void ChoisirUneQuestion() {
		Random rand = new Random();
		int facteur1 = rand.nextInt(99) + 1;
		int facteur2 = rand.nextInt(99) + 1;
		this.question = "Combien font " + facteur1 + " + " + facteur2 + " ?";
		this.bonneReponse = "" + (facteur1 + facteur2);
	}
 
	public void Corriger(String reponse) {
		if (reponse.equals(this.bonneReponse))
			this.siBonneReponse();
		else
			this.siMauvaiseReponse();
	};
 
	public String getQuestion() {
		return question;
	}
 
}

Voila ce que ça donne une fois utilisé:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.Scanner;
 
public class Main extends ProfDeMaths {
 
	static ProfDeMaths prof = new Main();
	static Scanner sc = new Scanner(System.in);
 
	@Override
	void siBonneReponse() {
		System.out.println("BONNE REPONSE !");	
	}
	@Override
	void siMauvaiseReponse() {
		System.out.println("MAUVAISE REPONSE !");
		prof.Corriger(sc.nextLine());
	}
 
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
 
		prof.ChoisirUneQuestion();
		System.out.println(prof.getQuestion());	
		prof.Corriger(sc.nextLine());
 
	}
 
}

Ca marche bien sauf qu'il y a un gros problèmes:

_ On ne peut étendre qu'une seul classe abstraite donc cette classe ProfDeMaths devient inutile si celui qui veut s'en servir veut le faire dans une classe qui herite deja d'un autre objet.

Et un autre probleme un peu moins gros:

_ L'implementation des methodes siBonneReponse et siMauvaiseReponse n'est pas obligatoire. Du coup sans les implementer manuellement et sans aller fouiller dans le code de ProfDeMaths on peut croire que la methode Corriger() ne fonctionne pas.


Y'a-t-il une meilleure manière de faire qui m'éviterait ces problemes afin que ce code soit re-utilisable sans ces inconvenients ?