
{filelink=11162}
import java.util.Random;
/*
 *
 * Exemple de Polymorphie en Java
 *
 **/
public class ExempleForme {
  private static RandomShapeGenerator gen = new RandomShapeGenerator();
  public static void main(String[] args) {
    Shape[] s = new Shape[5];
    // Remplir le tableau avec les formes:
    for (int i = 0; i < s.length; i++)
      s[i] = gen.next();
    //Appels de la m�thode polymorphique:
    for (int i = 0; i < s.length; i++)
      s[i].dessiner();
  }
}
class Shape {
  void dessiner() {
  }
  void effacer() {
  }
}
class Cercle extends Shape {
  void dessiner() {
    System.out.println("Cercle.dessiner()"); //La m�thode dessiner de la classe cercle
  }
  void effacer() {
    System.out.println("Cercle.effacer()");
  }
}
class Carr� extends Shape {
  void dessiner() {
    System.out.println("Carr�.dessiner()"); //La m�thode dessiner de la classe cerr�
  }
  void effacer() {
    System.out.println("Carr�.effacer()");
  }
}
class Triangle extends Shape {
  void dessiner() {
    System.out.println("Triangle.dessiner()"); //La m�thode dessiner de la classe triangle
  }
  void effacer() {
    System.out.println("Triangle.effacer()");
  }
}
// Factoriser la g�n�ration des Formes
class RandomShapeGenerator {
  private Random rand = new Random();
  public Shape next() {
    switch (rand.nextInt(3)) {
    default:
    case 0:
      return new Cercle();
    case 1:
      return new Carr�();
    case 2:
      return new Triangle();
    }
  }
}