Bonjour,
Je suis en train de coder la simulation d'une fourmilière et je suis confronté un petit problème depuis hier. Donc, j'ai une classe mère abstraite Fourmi. Ses filles sont Reine, Ouvrière, Soldat et Soigneur.
La Reine a une méthode produire() qui produit un certains nombre d'Ouvriere, de Soldat... renseignés en paramètres et qui retourne un Arraylist de Fourmi. De plus, dans cette même classe, il y a une fonction privée qui génère les Fourmi.
Voici le Code :
Ma question est : Comment puis-je faire pour avoir une collection comprenant des objets Mere et Filles afin de pouvoir accéder à leur propre méthode ?
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 /** * Retourne une collection de nouvelles fourmis * @return ArrayList de fourmis */ public ArrayList<Fourmi> produire(){ //Collection qui contiendra les nouvelles fourmis qui vont naître ArrayList<Fourmi> lesNouvellesFourmis = new ArrayList<Fourmi>(); //initialisations Ouvriere uneOuvriere = new Ouvriere(); Soldat unSoldat = new Soldat(); Soigneur unSoigneur = new Soigneur(); //5 ouvrieres genererFourmi(5, uneOuvriere, lesNouvellesFourmis); //3 soldats genererFourmi(3, unSoldat, lesNouvellesFourmis); //2 soigneurs genererFourmi(2, unSoigneur, lesNouvellesFourmis); return lesNouvellesFourmis; } public Message action() { return Message.getInstance(1, "Dix nouvelles fourmis viennent dans la fourmilière"); } //LOCAL private void genererFourmi(int nbre, Fourmi typeFourmi, ArrayList<Fourmi> collecFourmi){ if(typeFourmi instanceof Ouvriere) { for(int i = 0; i<nbre; i++){ Ouvriere uneOuvriere = new Ouvriere(1); collecFourmi.add(uneOuvriere); } }else if(typeFourmi instanceof Soldat) { for(int i = 0; i<nbre; i++){ Soldat unSoldat = new Soldat(1); collecFourmi.add(unSoldat); } }else if(typeFourmi instanceof Soigneur) { for(int i = 0; i<nbre; i++){ Soigneur unSoigneur = new Soigneur(1); collecFourmi.add(unSoigneur); } } }
Merci d'avance
Partager