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():
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
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; } }
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
Partager