Bonjour,
Aujourd'hui, j'ai essayé de comprendre l'utilité de __construct.
Je pense avoir compris (voir le code ci-dessous).
Je me demande si on m'a TOUT dit sur cette méthode.
En gros, cela me permet d'écrire :
$perso1 = new Personnage(10,2);
$perso2 = new Personnage(90,58);
Au lieu de :
$perso1 = new Personnage();
$perso2 = new Personnage();
$perso1->setForce (10);
$perso1->setExperience (2);
$perso2->setForce (90);
$perso2->setExperience (58);
et cela m'évite (sans doute) de devoir créé des setters puisque la méthode __construct est en 'public'.
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120 <?php class Personnage { private $force; private $localisation; private $experience; private $degats; // ----------------------------------------------------------------------------------------- // __construct () permet d'initialiser les valeurs des attributs. // Le reste du code est inchangé sauf lors des instanciations. // ----------------------------------------------------------------------------------------- public function __construct ($force, $degats) // __construct attend 2 valeurs. { echo 'Un objet vient d\'être créé.<br/>'; // Message s'affichant à chaque instance. $this->force = $force; // Initialisation de la force à la 1e valeur entre (). $this->degats = $degats; // Initialisation des dégâts à la 2e valeur entre (). $this->experience = 1; // Initialisation de l'expérience à 1. } // --------------------------------------------------------------------------------------- public function deplacer() { // Pour l'instant, aucune méthode. } // --------------------------------------------------------------------------------------- // Ici, on exige de la méthode "frapper" un paramètre de la classe "Personnage". public function frapper(Personnage $persoAFrapper) { // "$persoAFrapper->recevoirDegats" permet d'appeler de l'objet "$persoAFrapper" // la méthode recevoirDegats pour lui passer (à cette méthode) la valeur de $this->force. // NB La méthode "recevoirDegats" est plus loin; l'emplacement de la méthode importe peu // puisque l'on est ici dans une classe (dans la fabrication des plans de construction). $persoAFrapper->recevoirDegats ($this->force); } // --------------------------------------------------------------------------------------- public function gagnerExperience() { $this->experience++; // Ce qui signidie $this->experience = $this->experience + 1 } // --------------------------------------------------------------------------------------- // Dans cette méthode $persoAFrapper (ou tout autre Personnage créé) se reçoit des dégâts // qui ont une valeur égal à la force (+1 point). public function recevoirDegats ($force) { $this->degats += $force; // Ce qui signifie $this->degats = $force + 1; } // ----------------------------------------------------------------------------------------- // On crée ci-dessous les setters afin de pouvoir obtenir la valeur chaque attribut private. // ----------------------------------------------------------------------------------------- public function setForce ($force) { if (is_int ($force)) // On vérifie bien qu'on ne met pas n'importe quoi. $this->force = $force; } public function setExperience ($experience) { if (is_int ($experience)) $this->experience = $experience; } // ----------------------------------------------------------------------------------------- // On crée ci-dessous les getters afin de pouvoir obtenir la valeur chaque attribut private. // ----------------------------------------------------------------------------------------- public function getForce() { return $this->force; } public function getLocalisation() { return $this->localisation; } public function getExperience() { return $this->experience; } public function getDegats() { return $this->degats; } } // ----------------------------------------------------------------------------------- // On crée de nouvelles instances et on leur attribue des valeurs. // ----------------------------------------------------------------------------------- $perso1 = new Personnage(10,5); $perso2 = new Personnage(90,30); $perso1->frapper ($perso2); // $perso1 frappe $perso2. $perso1->gagnerExperience(); // On gagne de l'expérience. $perso2->frapper ($perso1); // $perso1 frappe $perso2. $perso2->gagnerExperience(); // On gagne de l'expérience. echo 'Le premier personnage a ' . $perso1->getForce() . ' de force, contrairement au second qui a ' . $perso2->getForce() . ' de force.<br />'; echo 'Le premier personnage a ' . $perso1->getExperience() . ' d\'expérience, contrairement au second qui a ' . $perso2->getExperience() . ' d\'expérience.<br />'; echo 'Le premier personnage a ' . $perso1->getDegats() . ' de dégâts, contrairement au second qui a ' . $perso2->getDegats() . ' de dégâts.<br />'; echo '<br/>'; echo '------------------------------------------------------------------------------------------------------------------------------<br/><br/>'; ?>
Partager