Les membres de classes


Un membre de classe (ou membre statique) est un attribut ou une méthode qui a une signification pour la classe entière et non pas pour une instance particulière de cette classe.

Pour illustrer ce nouveau concept, nous reprenons la classe Voiture du projet Voiture3 en y ajoutant des membres de classes. Cette nouvelle version de la classe Voiture se trouve dans le projet Voiture4 que vous trouverez dans le dossier Exemple-Java-ProgObjet1/Voiture4.

La fenêtre du projet Voiture4 comporte une zone de texte permettant d'afficher la liste des voitures créées avec leur kilométrage ainsi qu'un champ de texte contenant le nombre de voitures:

Voiture4.jpg, 41kB

Attributs de classes

Nous allons ajouter deux attributs de classe à la classe Voiture:

En Java, un attribut de classe se déclare à l'aide du mot clé static. Voici la déclaration de l'attribut NV:

public static int NV = 0; 

Etant donné qu'un attribut statique s'applique à la classe entière et ne caractérise pas une instance particulière de cette classe, on peut y accéder même lorsqu'aucune instance de cette classe n'a été créée. La valeur d'un tel attribut n'est pas stockée dans les objets de la classe et sera représenté en mémoire une seule fois indépendament du nombre d'instances créées.

Pour accéder à un attribut de classe depuis l'extérieur de cette classe, il faut le préfixer par le nom de la classe. Dans notre exemple, Voiture.NV permet d'accéder à l'attribut NV de la classe Voiture depuis l'extérieur de cette classe. A l'intérieur de la classe par contre, le préfixage n'est pas nécessaire.

L'attribut LesVoitures est déclaré comme un tableau d'objets de type Voiture, comme suit:

  public static 
      Voiture LesVoitures[]=new Voiture[MAX_VOITURE];

Ce tableau est destiné à contenir toutes les voitures créées par l'utilisateur. La voiture d'indice i sera donc désignée par Voiture.LesVoitures[i] depuis l'extérieur de la classe ou simplement par LesVoitures[i] depuis l'intérieur de la classe.

Dans la déclaration du tableau LesVoitures, nous utilisons une constante MAX_VOITURE pour définir sa dimension. Cette constante est également définie comme un attribut de classe:

  public final static int MAX_VOITURE=100;

Une remarque importante s'impose ici: ce que nous avions jusqu'à présent appelé constante est plus exactement un attribut non modifiable. Un tel attribut doit être obligatoirement initialisé dans sa déclaration et on ne pourra pas lui affecter de valeur ailleurs dans le code. Comme il est inutile de stocker une valeur constante dans toutes les instances d'une classe, il est judicieux de déclarer un attribut final comme un attribut de classe.

Methodes de classes

Une méthode de classe est une méthode qui agit sur les attributs de classe. Elle ne peut donc pas agir sur un attribut quelconque (c'est à dire non statique) d'une instance particulière. Une telle méthode se déclare en Java avec le mot clé static.

Dans la classe Voiture, nous avons déclaré une telle méthode pour ajouter une nouvelle voiture dans le tableau LesVoitures. Voici le code de cette méthode:

 public static void Ajouter (Voiture v)
  {
      LesVoitures[NV]=v;
      NV++;
  }