Exemple d'approche objet pour le calcul de PI

--> cat Cible.java
/* définition de la classe Cible */
class Cible {
   private int dedans;      // variable d'instance privée
   Cible( ) { dedans = 0;}   // constructeur d'une cible
   /* pour demander la valeur de sa variable dedans à une cible */
   int valDedans( ) { return dedans;}
   /* méthode de classe privée de la classe Cible */
   private static double f(double x){
      return Math.sqrt(1 - (x * x));}
   /* méthode d'instance public correspondant au lancer d'une flèche */   
   public void lancer(){
   /* deux nombres sont tirés au sort dans l'intervalle [0:1[ */
   /* ils correspondent à l'impact de la fléche dans la cible */
     double u = Math.random();
     double v = Math.random();
   /* si on est dans la cible, celle-ci comptabilise le tir */
     if( v <= f(u)) dedans ++;
     }
}
--> cat Pi.java
/* application utilisant une cible */
import fr.jussieu.script.*;
class Pi {
   private static int serieDeLancers (int n) {
     Cible cible = new Cible();  // on acquiert une nouvelle cible
     /* on effectue n lancers sur la cible */
     for (int i = 0; i < n; i++) cible.lancer();
     /* on demande le score à la cible et on le renvoie */
     return cible.valDedans();
     }
   public static void main(String[ ] st){
     int nbLancers, score;
     double pi;
     /* on décode le premier paramètre -> nombre de lancers */
     nbLancers = Deug.stringToInt(st[0]);
     /* on déduit du score la valeur de PI */
     score = serieDeLancers(nbLancers);
     pi = 4 * ((double)score / nbLancers);
     Deug.println("PI = " + pi);
     }
}
--> javac Pi.java Cible.java
--> java Pi 100000
PI = 3.14452
--> java Pi 1234567
PI = 3.1409328128809535
-->