Après QuadAleas vient
… une classe avec quatre fils de typeObject, … une méthode setValue (ou metsValeur pour faire plus français) qui modifie la valeur d'un fils pour voir si c'est possible ou s'il faut remplacer l'objet fils.
En fait, je ne vois pas comment faire cette méthode metsValeur pour la rendre generique, applicable à chacun des quartiers. Peut être faut-il dériver une classe Feuille ou MatElem de la classe Double et doter cette nouvelle classe d'une méthode metsValeur? A essayer...
J'ai donc fait une méthode par quartier : lourd, pas élégant, mais ça marche :
import java.math.*;
import java.io.*;
public class QuadDble {
Object NW, NE, SE,SW;
int niveau=1;
double x;
public void NWmetsValeur(double x)
{
System.out.println("valeur "+x+"recue");
this.NW = new Double(x);
}
public void NEmetsValeur(double x)
{
System.out.println("valeur "+x+"recue");
this.NE = new Double(x);
}
public void SWmetsValeur(double x)
{
System.out.println("valeur "+x+"recue");
this.SW = new Double(x);
}
public void SEmetsValeur(double x)
{
System.out.println("valeur "+x+"recue");
this.SE = new Double(x);
}
}
Programme testeur (avec possibilité d'abandonner à deux ou trois endroits):
import java.math.*;
import java.io.*;
public class TestQuadDble {
public static void main(String args[])
{
String lect=null;
int n;
double x,dv;
QuadDble q;
BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
System.out.print("continuer? 0=non, 1=oui");
try{lect=console.readLine();}
catch (IOException e){}
n = Integer.valueOf(lect).intValue();
if (n==1){
q = new QuadDble();
System.out.println("Debut injection des valeurs");
x=Math.random();
System.out.println("NW="+x);
q.NWmetsValeur(x);
x=Math.random();
System.out.println("NE="+x);
q.NEmetsValeur(x);
x=Math.random();
System.out.println("SE="+x);
q.SEmetsValeur(x);
x=Math.random();
System.out.println("SW="+x);
q.SWmetsValeur(x);
System.out.print("continuer? 0=non, 1=oui");
try{lect=console.readLine();}
catch (IOException e){}
n = Integer.valueOf(lect).intValue();
if (n==1){
System.out.print("que vaut q.NE? ");
System.out.println(((Double) q.NE).doubleValue());
System.out.print("que vaut q.NW? ");
dv=((Double) q.NW).doubleValue();
System.out.println(dv);
System.out.print("que vaut q.SW? ");
System.out.println(((Double) q.SW).doubleValue());
System.out.print("que vaut q.SE? ");
System.out.println(((Double) q.SE).doubleValue());
}
System.out.print("essayer de modifier une valeur? 0=non, 1=oui");
try{lect=console.readLine();}
catch (IOException e){}
n = Integer.valueOf(lect).intValue();
if (n==1){
x=Math.random();
System.out.println("SW="+x);
q.SWmetsValeur(x);
System.out.print("que vaut q.SW? ");
System.out.println(((Double) q.SW).doubleValue());
}
}
}
}
continuer? 0=non, 1=oui1 Debut injection des valeurs NW=0.47048642429862775 valeur 0.47048642429862775recue NE=0.1843730858126701 valeur 0.1843730858126701recue SE=0.3580267550720042 valeur 0.3580267550720042recue SW=0.946249162804506 valeur 0.946249162804506recue continuer? 0=non, 1=oui1 que vaut q.NE? 0.1843730858126701 que vaut q.NW? 0.47048642429862775 que vaut q.SW? 0.946249162804506 que vaut q.SE? 0.3580267550720042 essayer de modifier une valeur? 0=non, 1=oui1 SW=0.8723256037955097 valeur 0.8723256037955097recue que vaut q.SW? 0.8723256037955097