Médiaforma

Java – Dériver une classe Java

Print Friendly

La dérivation de classes est un processus élégant qui est utilisé lorsque l’on désire ajouter des fonctionnalités à une classe existante sans avoir à réécrire le code de cette classe. En effet, lorsque l’on dérive une classe, la nouvelle classe hérite de toutes les données membres et de toutes les fonctions membres de la classe dont elle est issue.

Pour illustrer ce processus, nous allons raisonner sur la classe Cylindre définie précédemment. Voici la version de la classe Cylindre que nous allons utiliser :

public class Cylindre {
  static private double rayon;
  static private double hauteur;

  public Cylindre() {
    rayon = 1;
    hauteur = 1;
  };

  public Cylindre(double r, double h) {
    rayon = r;
    hauteur = h;
  };

  static public double Calcule() {
    return 3.1415 * rayon * rayon * hauteur;
  }
}

Supposons que vous désiriez calculer le volume de plusieurs cylindres avec la classe Cylindre. Dans l’état actuel de la classe Cylindre, ceci est impossible, à moins de définir autant d’objets que de volumes à calculer.

Pour arriver à vos fins, il faudrait définir la fonction membre publique Affecte() suivante :

public void Affecte(double r, double h) {
  rayon = r;
  hauteur = h;
};

Pour calculer le volume d’un autre cylindre en utilisant le même objet, il suffirait d’appeler cette méthode en fournissant les nouvelles données, puis la méthode Calcule() pour obtenir le résultat.

Nous allons donc définir une classe dérivée de la classe Cylindre et implémenter la fonction Affecte().

La syntaxe d’une classe dérivée est la suivante :

class nom1 extends nom2 {
  ...
   // Nouvelles données et fonctions membres
  ...
};

nom1 est le nom de la classe dérivée, et nom2 le nom de la classe de base.

Voici donc la classe NouveauCylindre, dérivée de la classe Cylindre :

public class NouveauCylindre extends Cylindre {
  public void Affecte(double r, double h) {
    rayon = r;
    hauteur = h;
  };
}

Pour que la méthode Affecte() puisse accéder aux variables membres rayon et hauteur, il faut les définir sous la forme public dans la classe Cylindre :

public class Cylindre {
  static public double rayon;
  static public double hauteur;
  ...
}

Voici enfin le listing du programme qui exploite la classe Cylindre et la classe dérivée NouveauCylindre :

public class Calcul {
  public static void main(String args[]) {
    NouveauCylindre Cyl = new NouveauCylindre();
    Cyl.Affecte(4.6, 12.0);
    System.out.println("Volume du cylindre Cyl : " + Cyl.Calcule());

    Cyl.Affecte(5.0, 10.0);
    System.out.println("Volume du cylindre Cyl : " + Cyl.Calcule());
  }
}

La première instruction définit un objet Cyl de classe NouveauCylindre :

NouveauCylindre Cyl = new NouveauCylindre();

En utilisant la méthode Affecte() de la classe NouveauCylindre, il est désormais possible de définir la valeur des variables membres rayon et hauteur :

Cyl.Affecte(4.6, 12.0);
System.out.println("Volume du cylindre Cyl : " + Cyl.Calcule());

Ces variables peuvent être réajustées autant de fois que nécessaire sans demander la définition d’un nouvel objet :

Cyl.Affecte(5.0, 10.0);
System.out.println("Volume du cylindre Cyl : " + Cyl.Calcule());
Vous avez aimé cet article ? Partagez-le avec vos réseaux...
 
Comments

No comments yet.

Leave a Reply