1mod.drawCube(this);
Là aussi le vocabulaire est très bien choisi puisque this en anglais veut dire "ceci".
Voyons maintenant THE application, le fondement principal de la structure de l’objet.
3.2 Le set/get en soi
Lorsque l’on utilise l’objet, il y a des attributs internes et des attributs externes, i.e. des attributs qui n’intéressent
que l’objet en lui même, et d’autres que l’utilisateur veut visualiser ou modifier. Par exemple, le module d’affichage
de notre cube, il est intéressant de pouvoir modifier le titre de la fenêtre dans laquelle le cube sera affiché (ou encore
la taille de la fenêtre), et par contre, l’utilisateur se fout de savoir qu’un panel sera créé pour mettre le cube dedans,
pourtant il sera attribut.
La manipulation des attributs interne est souvent déclaré en tant que private, les externes en tant que public. Pour
récupérer ou modifier ces paramètres indépendaments de public et private on a la méthode du SET/GET. Pour chaque
attribut qu’il serait interessant de donner accès à l’extérieur, on peut créer deux méthodes, l’une SET (modifier), l’autre
GET (récupérer). Evidemment si l’on veut protéger un attribut en écriture, on ne créé pas de SET. Voyons sur notre
cube, déclaré tel qu’un vrai programmeur ferait :
1public class Cube {
2public int cote;
3public Cube(int cote) {
4this.cote = cote;
5}
6public void setCote(int cote) {
7this.cote = cote;
8}
9public int getCote(int cote) {
10 return cote;
11 }
12 }
Voila une des principales implémentations du this. A la ligne 4, on a this.cote qui représente le cote pur de l’objet,
et cote qui représente le paramètre passé au constructeur Cube. Le set est exactement pareil, mais lui ne crée pas, il
modifie juste l’attribut. Le get lui renvoi l’attribut cote, la différence avec c.cote? A priori aucune, mais il y a deux
avantages. Tout d’abord il structure beaucoup plus le code, on sait quand on appelle un get, que l’on veut récupérer la
valeur de l’attribut. Et ensuite, il est indépendant de la déclaration public.
4 Statique et Dynamique
Dans la manipulation d’objet, la première chose que l’on fait, c’est la création d’une instance. Seulement, une classe
peut être vue comme un module, un plug-in, qui en soit est évidemment un objet (de toute façon, tout est objet). Sans
créer l’instanciation, i.e. sans l’initialiser, un module peut avoir des fonctions concrêtes. Un exemple? Il y en a bien
que vous avez déjà manipulé, Integer.parseInt par exemple? Integer est bien une classe, on peut en créer une instance
(vous pourrez voir ce qu’il en retourne dans l’API d’ailleurs), mais on peut appeler sans instance la fonction parseInt.
On dit que la fonction parseInt est statique.
Dans notre cube, on ne peut dire que la fonction surface est statique, puisque Cube.surface() n’aurait AUCUN
sens, on demanderait la surface, oui mais de quoi? Evidemment il n’y a pas que les fonctions qui ont le monopole de
la capacité à être statique, les attributs peuvent l’être, évidemment System.out est un attribut statique (certes c’est un
peu tordu car out est un flux, chut je n’ai rien dit). Par contre les attributs statiques doivent être initialisés dans leur
déclaration (évidemment il faut bien retourner quelque chose non?).
Pourquoi statique? Tout simplement parce que la situation d’une méthode statique ne changera pas au cours du
temps, pareil pour les variables statiques, la prochaine fois qu’on les appelera, le processus sera remis à zéro et on
continuera. Ca tous les langages peuvent utiliser ce principe!
La dynamique c’est justement quelque chose qui pourra fluctuer au cours du temps, voyez le simple getCote.
Appelez une fois getCote, faites un coup de setCote, et réappellez getCote, il a changé de valeur, pourtant c’est toujours
la même méthode ... Voila une des puissances de l’objet, vous ne manipulez pas UNE variable, vous manipulez un
ENSEMBLE que l’on appelle Objet.
Petite précision, lorsque l’on déclare une méthode statique, tous les attributs et méthodes appellés doivent être
obligatoirement statiques. C’est évident car une méthode statique ne peut faire appel à une structure dynamique, elle
serait donc dynamique par définition.
Maintenant, que l’on sait ce qu’est le statique, illustrons tout cela par un petit exemple.
3