Java - Les objets

Décembre 2016

La création d'objets


Un objet est une instance de classe, la création d'objets se fait à l'aide du constructeur de cette classe. Cette instanciation se fait grâce à l'opérateur new suivi du nom de la classe à instancier et des parenthèses contenant les paramètres du constructeur.

Un exemple avec la classe String :

new String("Bonjour");

Les références


Lorsqu'un objet est construit, les données qui le constitue sont placées dans un endroit de la mémoire auquel on ne peut pas directement accéder. On peut cependant récupérer une référence de l'objet, c'est à dire le point d'accès en mémoire de cet objet, que l'on place alors dans une variable.
Le concept des références est très proche de celui des pointeurs en langage C/C++, mais leur utilisation est beaucoup plus transparente pour le développeur.

String str = new String("Bonjour");

Contrairement à ce que l'on pourrait penser, la variable str ne contient pas la chaîne de caractères "Bonjour", mais uniquement une référence (un entier) vers l'objet qui est en mémoire. Mais il est impossible de modifier les données en mémoire autrement qu'en utilisant les méthodes de l'objet.

Remarque : chaque objet a une seule référence, c'est à dire une seule adresse en mémoire, mais on peut avoir plusieurs variables qui possèdent la même référence.

String str1, str2, str3;
str1 = new String("Bonjour");
str2 = str1;
str3 = new String("Au revoir");

Ici str1 et str2 auront la même valeur, c'est à dire la référence de l'objet de la classe String dont les données représentent le mot "Bonjour". En revanche str3 référence un autre objet, placé ailleurs en mémoire, et dont dont les données représentent le mot "Au revoir".

Accéder aux données membres d'un objet


L'accès aux données membres d'un objet se fait grâce à la référence de l'objet (par exemple via la variable qui contient cette référence), suivi d'un point, puis du nom de la donnée membre. Par exemple :

reference.nomDonnee = valeur;

Si la donnée membre est elle-même la référence d'un autre objet, alors on peut également accéder à ses données membres de la même manière :
(reference.donneeQuiReference).nomDonnee = valeur

Remarque : les parenthèses sont ici totalement inutiles, on peut tout à fait les enlever.

Accéder aux méthodes d'un objet


L'accès aux méthodes d'un objet se fait comme pour l'accès aux données membres, c'est-à-dire par un point. La méthode est suivie de parenthèses, contenant les paramètres, si il y'en a. L'accès à une fonction membre se fait donc de la façon suivante :

reference.methode(parametre1,parametre2);

Le mot clé this


Le mot clé this permet de désigner l'objet courant. Lorsque l'on développe une classe, on code le comportement que devra avoir l'objet lorsqu'il sera utilisé, si dans une méthode un objet doit s'utiliser lui même (en général comme argument d'une autre méthode), alors il est nécessaire de connaître sa propre référence, qui nous ai donné par la valeur de this.

Par exemple : dans une méthode on veux que l'objet s'affiche lui même à l'écran, on pourrait faire :

public void afficher() {
    System.out.println(this);
}


MaClasse monObjet = new MaClasse(mesParametres);
monObjet.afficher();</code>
Ici, à l'intérieur de la méthode afficher, la référence de this sera exactement celle de monObjet.

Remarque : il est courant de mélanger les termes d'objet et de référence, et ainsi d'appeler "objet" ce qui est une "référence", mais cela a bien souvent peu d'importance.
Par analogie, cette confusion revient à demander à quelqu'un "d'appeler un numéro de téléphone", or ce n'est jamais un numéro de téléphone que l'on appelle, mais la personne qui est joignable en appelant ce numéro de téléphone. Le numéro de téléphone serait donc la référence qui permet d'utiliser l'objet (appeler la personne). Pour peu que l'on ait un service à demander à cette personne, on caractérise alors la notion de méthode.


A voir également :

Ce document intitulé «  Java - Les objets  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.