next up previous contents index
Next: Un pattern de création Up: Patterns Previous: Paquets et accessibilité

      
Patterns d'accès et discipline d'encapsulation

L'encapsulation est une technique de génie logiciel qui permet de cacher les détails d'implémentation d'un objet pour ses utilisateurs. Java donne plusieurs moyens pour assurer cette encapsulation, et il appartient au programmeur de les utiliser. Afin d'empêcher l'utilisateur d'accéder directement aux champs de l'objet, on peut déclarer ses champs private et offrir éventuellement des méthodes publiques de lecture ou d'écriture de ces champs, formés selon l'usage par get ou set (en français, val ou chg) suivi du nom du champ capitalisé, selon le pattern d'accès suivant :    

class A {
 private int champ;

 public int valChamp() {
  return champ;
 }

 public void chgChamp(int champ) { 
  this.champ = champ;
 }
}

Le fait de ne définir que val... (resp. chg...) interdit l'accès en écriture (resp. lecture).


L'usage des méthodes d'accès permet également de contrôler la valeur des champs dans les cas où elle doit respecter certaines contraintes. Par exemple, si l'on sait qu'un champ numérique doit être compris entre deux valeurs champMIN et champMAX, la méthode chgChamp() s'assurera du respect de cette contrainte :

  private int champMIN, champMAX;

  public void chgChamp(int champ) {
    if (champ<champMIN) 
      this.champ = champMIN;
    else if (champ>champMAX)
      this.champ = champMAX;
    else
      this.champ = champ;
  }

Comme autre exemple, il y a des situations où le nombre de fois qu'un champ est modifié doit être limité (par exemple, la zone d'un lecteur de DVD peut être changée au plus 5 fois) : un champ supplémentaire, évidemment privé, et initialisé implicitement à 0, permet de contrôler le nombre de modifications.

  private static final int N = 5;
  private int champModifié;

  public void chgChamp(int champ) {
    if (champModifié<N) 
      this.champ = champ;
      champModifié++;
  }

Tous ces exemples constituent des << patterns >>, c'est-à-dire des solutions typiques à des problèmes qui se rencontrent fréquemment, et qui peuvent être adaptées à chaque problème. La discipline d'encapsulation  consiste à rendre systématiquement les champs privés, et à fournir, selon les besoins, l'une ou l'autre des méthodes d'accès chgXxx() et valXxx() à chaque champ xxx, selon le pattern souhaité.

    Une méthode peut aussi être déclarée privée en faisant précéder sa déclaration du mot-clé private. Une méthode privée peut être invoquée par une méthode de la classe où elle est définie, mais pas par une méthode d'une autre classe. Une méthode privée n'est pas héritée et ne peut pas être redéfinie.


next up previous contents index
Next: Un pattern de création Up: Patterns Previous: Paquets et accessibilité
R. Lalement
2000-10-23