Bonjour,
Je suis entrain de voir le design pattern Composite.J'ai compris le principe et j'ai suivi un exemple d'un semi remorque composé d'un tracteur et d'une remorque, qui ont un poids séparé mais également un poids camion entier. Un tracteur routier doit également pourvoir rouler sans remorque.

Pour la classe composite j'ai trouvé deux méthodes que j'ai vraiments pas compris getEnfant() et getPoid():
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
 
public class CamionComposite implements Composant {
 
	private Collection children;
 
    public CamionComposite() {
        children = new ArrayList();
    }
 
 
    public void add(Composant composant){
 
        children.add(composant);
    }
 
 
    public void remove(Composant composant){
        children.remove(composant);
    }
 
    public Iterator getChildren() {
        return children.iterator();
    }
 
	@Override
    public int getPoids() {
        int result = 0;
        for (Iterator i = children.iterator(); i.hasNext(); ) {
            Object objet = i.next();
 
            Composant composant = (Composant)objet;
 
            result += composant.getPoids();
        }
        return result;
    }
}
J'ai fais la méthode getPoids avec ma propre manière et sa fonctionne mais j'ai vu que de nombreuse code sources utilise Iterator j'aimerais comprendre le principe

voila mon code :

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
package CompositeCamion;
 
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
 
public class CamionComposite extends Composant {
public ArrayList<Composant> enfants = new ArrayList<Composant>();
	public CamionComposite()
	{
 
	}
 
	public void ajouter(Composant composant)
	{
		enfants.add(composant);
	}
	public void supprimer(Composant composant)
	{
		enfants.remove(composant);
	}
	@Override
	public int getPoids() {
		int resultat=0;
		for(Composant composant:enfants)
		{
			resultat += composant.getPoids();
		}
		return resultat;
	}
	public Iterator getEnfant()
	{
		return enfants.iterator();
	}
 
}

Merci