Comme expliqué dans l'activité 1, une instance de classe possède des attributs (variables) et des méthodes (fonctions). Commençons par les attributs :
Nous allons associer un attribut "vie" à notre classe personnage (chaque instance aura un attribut "vie", quand la valeur de "vie" deviendra nulle, le personnage sera mort !)
Ces attributs s'utilisent comme des variables, l'attribut "vie" pour bilbo sera noté
bilbo.vie
de la même façon, l'attribut "vie" de l'instance gollum sera noté
gollum.vie
Saisissez, analysez et testez ce code
// Défini une classe Personnage
class Personnage {
// nous créons un attribut vie
int vie;
}
Personnage gollum;
gollum = new Personnage();
// On donne 20 points de vie à gollum
gollum.vie=20;
// on créé une autre instance de la classe personnage nommée Bilbo
Personnage bilbo;
bilbo = new Personnage();
// On donne 20 points de vie à Bilbo
bilbo.vie=20;
// affichage du nombre de points de vie pour Bilbo
println ("Bilbo a "+bilbo.vie+" points de vie");
// affichage du nombre de points de vie pour Gollum
println ("Gollum a "+gollum.vie+" points de vie");
println ("Bilbo est blessé par Gollum");
// bilbo est blessé, il perd un point de vie
bilbo.vie=bilbo.vie-1;
// on affiche de nouveau les points de vie
println ("Bilbo a "+bilbo.vie+" points de vie");
println ("Gollum a "+gollum.vie+" points de vie");
Nous allons modifier le programme vu dans le "À faire vous-même 3.1" afin d'introduire une notion fondamentale, la notion de constructeur. Un constructeur est une méthode (fonction) qui est exécutée au moment de la création d'une instance (un constructeur "construit" une instance).
Le constructeur est une méthode qui ne retourne aucune valeur. Comme leurs "cousines" les fonctions, les méthodes qui ne retournent aucune valeur voient leur nom précédé du mot "void". Le constructeur est une exception puisque le nom du constructeur ne doit pas être précédé du mot "void". En parlant du nom du constructeur, vous n'aurez pas le choix, il est imposé, cela doit être le nom de classe. Grâce à notre constructeur, l'attribution des 20 points de vie à nos instances se fera automatiquement au moment de la création de notre instance.
Pour des raisons internes à Processing, nous devons placer une partie du code dans la fonction "setup" dans l'exemple qui suit. Je ne rentrerai pas dans les détails, cela n'a pas grand intérêt.
Saisissez, analysez et testez ce code
Personnage gollum;
Personnage bilbo;
class Personnage {
int vie;
// le constructeur
Personnage(){
vie=20;
}
}
void setup() {
gollum = new Personnage();
bilbo = new Personnage();
println ("Bilbo a "+bilbo.vie+" points de vie");
println ("Gollum a "+gollum.vie+" points de vie");
println ("Bilbo est blessé par Gollum");
bilbo.vie=bilbo.vie-1;
println ("Bilbo a "+bilbo.vie+" points de vie");
println ("Gollum a "+gollum.vie+" points de vie");
}
Pour l'instant, l'intérêt de l'utilisation d'un constructeur n'est pas évident. Vous comprendrez mieux le pourquoi du comment dans la prochaine activité.