Java:this explications

domxaline -  
 Sei -
Bonjour,
class Rectangle{ 
    int x, y, largeur, longueur;
    Rectangle(int x, int y, int la, int lo){
       this.x = x; this.y = y; 
       largeur = la; longueur = lo;
    }
    void deplaceDe( int dx, int dy){
       x+=dx; y+=dy;
    }
    double perimetre(){
       return 2*(largeur+longueur);
    }
    double surface(){
       return largeur*longueur;
    }
 } 

j'ai toujours difficulté à comprendre
ce "this" et le formule "x+=dx"
quelq'un peut m'expliquer svp
A voir également:

4 réponses

KX Messages postés 19031 Statut Modérateur 3 020
 
this c'est l'objet courant qui dispose de propriétés, ici par exemple il y en a 4 : x, y, largeur, et longueur.
Si on était super rigoureux il faudrait toujours utiliser this de sorte à toujours avoir une méthode qui s'applique à un objet (ou à une classe).

Rectangle(int x, int y, int la, int lo)
{
    this.x = x;
    this.y = y; 
    this.largeur = la;
    this.longueur = lo;
}

Mais en pratique, this est oublié, et une méthode qui est appelé sans objet est appliquée implicitement à l'objet courant this.

Par contre, ici c'est obligatoire d'utiliser this car il y a ambiguïté entre le nom des paramètres x et y, et des propriétés de l'objet qui s'appellent x et y aussi.
Dans ce cas précis, ce sont les paramètres qui sont prioritaires, car ils ne peuvent pas s'écrire autrement, alors que les propriétés peuvent être identifiées autrement (par this).

Sinon "x+=dx" c'est juste un raccourci fréquemment utilisé mais équivalent à "x=x+dx", à part pour les pros de l'assembleur qui diront que "x+=dx" est moins coûteux car il n'y a pas à stocker la mémoire temporaire du résultat "x+dx" avant de l'affecter à x, donc c'est bien de privilégier l'écriture += même si je ne suis pas sûr que cela change grand chose en Java...
0
mousekey Messages postés 268 Statut Membre 4
 
this est un pointeur vers la classe actuelle... c'est le toi ...
Signature non conforme Modération CCM
0
domxaline
 
"x+=dx" j'ai compris
pour le "this" toujours dans incompréhension total
svp donnez moi plus de temps de m'expliquer a
0
domxaline
 
"this c'est l'objet courant qui dispose de propriétés, ici par exemple il y en a 4 : x, y, largeur, et longueur. "

this.x = x; this.y = y;

x,y,largeur,et longeur sont déjà déclaré,
pourquoi encore une on dit
this.x=x;this.y=y;
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Parce qu'être déclaré c'est bien, mais encore faut-il pouvoir les utiliser !!!

Voici par exemple un code qui ne fonctionne pas comme on voudrait :

public class Simple
{
    int x;

    public Simple(int x)
    {
        x = x;
    }
}

Dans l'affectation x = x; Java ne peut pas comprendre que le x de gauche est différent de celui de droite. En fait ce sont les deux mêmes, c'est celui qui est passé en paramètre du constructeur.
Alors comment utiliser le "x" qui est déjà déclaré ? Réponse : en utilisant this.x !

Pourquoi ? Parce que tu es en train de développer une méthode (ici un constructeur) qui va s'appliquer à un objet en particulier. Or cet objet qui c'est ??? C'est this !
0
Sei
 
excellent exemple merci !
0