Bonjour à tous,

Ci dessous les 4 classes d'un petit programme simple qui crée une voiture composée d'un moteur et d'un calculateur de vitesse. La classe de lancement est Interface.java.

Classe Interface.java :
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
 
 
public class Interface {
 
	private Voiture voiture;
 
	private static final Interface monInterface = new Interface();
 
	Interface(){
		voiture = new Voiture();
 
		//Je voudrais afficher ici la valeur de la vitesse :
 
		System.out.println(monInterface.getVoiture().getVitesse());
	}
 
	public static Interface getInstance() {
		return monInterface;
	}
 
	public Voiture getVoiture(){
		return voiture;
	}
 
	public static void main(String[] args)
	{
		//Alors que l'affichage ici fonctionne :
 
		System.out.println("Regime moteur : " + monInterface.getVoiture().getMoteur().getRegime());
		System.out.println("Vitesse : " + monInterface.getVoiture().getVitesse());
	}
}
La classe Voiture.java :
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
34
35
 
 
public class Voiture {
 
	//attributs
	private Moteur moteur;
	private CalculVitesse calculVitesse;
 
 
	//constructeur
 
	public Voiture(){
		moteur = new Moteur();
		calculVitesse = new CalculVitesse();
	}
 
	//methodes
 
	public Moteur getMoteur(){
		return moteur;
		// idem que
		// return this.moteur;
	}
 
	public CalculVitesse getCalculVitesse(){
		return calculVitesse;
	}
 
	public double getVitesse(){
		return getCalculVitesse().getVitesse();
	}
 
 
 
}
La classe Moteur.java :

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
 
 
public class Moteur {
 
	private int regime=2500;
 
	Moteur(){
 
	}
 
	public int getRegime(){
		return regime;
	}
 
}
et la classe CalculVitesse.java :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
 
public class CalculVitesse {
 
	float vitesse;
 
CalculVitesse(){}
 
	public double getVitesse(){
		return Interface.getInstance().getVoiture().getMoteur().getRegime()/100;
	}
 
}
Dans l'Interface on crée une interface monInterface qui crée une voiture a partir de la classe Voiture qui crée un moteur et un calculateur de vitesse.

ce qui pose problème c'est d'afficher dans le constructeur la valeur de la vitesse en faisant :

System.out.println(monInterface.getVoiture().getVitesse());

Cela ne fonctionne pas !
Pouvez-vous m'expliquer pourquoi ?

Merci !