Analyse

Jina
Analyse

Je suis débutante en java j'ai jamais fait avant de programmation et la j'ai un projet sur l'allocation de ressources

Allocation de ressources

Une plante terrestre croît grâce à l'assimilation de deux types de ressources : du carbone, prélevé dans
l'atmosphère par les feuilles en présence de lumière (photosynthèse) ; de l'azote, prélevé dans le sol par les
racines. Il faut de l'azote et du carbone pour fabriquer et faire grandir les feuilles. Il faut aussi de l'azote et du
carbone pour fabriquer et faire pousser les racines. Plus il y a de surface de feuille, plus la quantité de carbone
prélevée augmente. Plus il y a de surface de racine, plus la quantité d'azote prélevée augmente. Pour que la
croissance soit optimale, il faut que les ressources soient correctement réparties de façon dynamique entre les
organes de la plante. Par exemple, si la plante manque d'azote, elle doit temporairement favoriser le
développement des racines plutôt que des feuilles, etc.
Ce système peut être modélisé par des agents (feuilles et racines) qui fournissent des nutriments et demandent
des ressources. La répartition de ces ressources vise à assurer une croissance optimale de la plante.

J'ai pensé à creer 4 class Feuille racine N et C et je vois un peu les méthodes et les données des classes feuille et racine mais je ne vois pas trop les méthodes et les données des class C et N est ce quelqu'un qui s' y connaît pourrais m'aider ?

Niroken

Bonjour,

Le début de ta conception est bien mais, jepense que pour ton exercice, c'est tout simplement une plante qu'il faut modéliser.
Le carbone et l'azote ne sont que des quantités contenues dans la plante.

Pour débuter voici comment je vois les choses.

Une plante a :
- 0 à N feuilles
- 0 à N racines (pas forcément réaliste mais bon)
- Une quantité d'azote absorbée disponible
- Une quantité de carbone absorbée disponible

La plante peut :
- faire grandir ses feuilles et/ou racines
- créer de nouvelles feuilles et/ou racines
- absorber des ressources

-----------------------------------------

Une feuille a :
- Une surface
- Un coefficient d'absorbtion de carbone par unité de surface (commun à toutes les feuilles) (je n'ai pas mis ici le temp en ligne de compte)

Une feuille peut :
- grandir
- absorber du carbone

------------------------------------------

Une racine a:
- Une surface
- Un coefficient d'absorbtion de azotepar unité de surface (commun à toutes les racines) (je n'ai pas mis ici le temp en ligne de compte)

Une racine peut :
- grandir
- absorber de l'azote

------------------------------------------

La modélisation java de ce que je viens de dire se traduit ainsi :

Plante

package bean;

import java.util.ArrayList;
import java.util.List;

public class Plante {
	
	private double mQuantiteAzote;
	
	private double mQuantiteCarbone;
	
	private List<Feuille> mFeuilles;
	
	private List<Racine> mRacines;

	public Plante() {
		mQuantiteAzote = 0;
		mQuantiteCarbone = 0;
		mFeuilles = new ArrayList<Feuille>();
		mRacines = new ArrayList<Racine>();
	}
	
	public List<Feuille> getFeuilles() {
		return mFeuilles;
	}

	public void setFeuilles(List<Feuille> feuilles) {
		mFeuilles = feuilles;
	}

	public List<Racine> getRacines() {
		return mRacines;
	}

	public void setRacines(List<Racine> racines) {
		mRacines = racines;
	}
	
	public double getQuantiteAzote() {
		return mQuantiteAzote;
	}

	public double getQuantiteCarbone() {
		return mQuantiteCarbone;
	}
	
	public void absorbeRessources() {
		for (Feuille vFeuilleTmp : mFeuilles) {
			mQuantiteCarbone += vFeuilleTmp.absorbeCarbone();
		}
		
		for (Racine vRacineTmp : mRacines) {
			mQuantiteAzote += vRacineTmp.absorbeAzote();
		}
	}
	
	public void creerRacine() {
		mRacines.add(Racine.creerRacine(mQuantiteAzote, mQuantiteCarbone));
	}
	
	public void creerFeuille() {
		mFeuilles.add(Feuille.creerFeuille(mQuantiteAzote, mQuantiteCarbone));
	}
	
	public void faireGrandirFeuilles() {
		for (Feuille vFeuilleTmp : mFeuilles) {
			vFeuilleTmp.faireGrandirFeuille(mQuantiteAzote, mQuantiteCarbone);
		}
	}
	
	public void faireGrandirRacines() {
		for (Racine vRacineTmp : mRacines) {
			vRacineTmp.faireGrandirRacine(mQuantiteAzote, mQuantiteCarbone);
		}
	}
	
}

Feuille

package bean;

public class Feuille {
	
	private static double sCoefficientAbsorbCarbone = 1;
	
	private double mSurface;

	public Feuille() {
		mSurface = 0;
	}
	
	public double getSurface() {
		return mSurface;
	}

	public void setSurface(Double surface) {
		mSurface = surface;
	}
	
	public double absorbeCarbone() {
		return mSurface * sCoefficientAbsorbCarbone;
	}
	
	public void faireGrandirFeuille(double pQuantiteAzoteDispo, double pQuantiteCarboneDispo) {
		mSurface += 1;
	}
	
	public static Feuille creerFeuille(double pQuantiteAzoteDispo, double pQuantiteCarboneDispo) {
		return new Feuille();
	}
	
}

Racine

package bean;

public class Racine {
	
	private static double sCoefficientAbsorbAzote = 1;
	
	private double mSurface;

	public Racine() {
		mSurface = 0;
	}
	
	public double getSurface() {
		return mSurface;
	}

	public void setSurface(Double surface) {
		mSurface = surface;
	}
	
	public double absorbeAzote() {
		return sCoefficientAbsorbAzote * mSurface;
	}
	
	public void faireGrandirRacine(double pQuantiteAzoteDispo, double pQuantiteCarboneDispo) {
		mSurface += 1;
	}
	
	public static Racine creerRacine(double pQuantiteAzoteDispo, double pQuantiteCarboneDispo) {
		return new Racine();
	}
	
}

Voila, bon bien sur tout n'est pas forcément exact, mais cela constitue un point de départ.

Bonne chance,
Niroken

Jina
Re Analyse

Merci pour ton aide! Je vois plus ce que je pourrais faire Je vais rajouter une class main Repartition dans laquelle si il ya moins d'azote je ferai gandir les racines et si ily a moins de cabone je ferais plutôt grandir les feuilles avec des boucles while ou des selection genre if et else en fonction des ressources disponibles

Jina
Re: Analyse

J'ai finalement fait une analyse de l'exercice et je voulais rajouter l'eau et la lumière de façon à ce que la plante en est tjrs et je sais pas si doit utiliser des méthodes ou des attributs pour le faire .
Je veux aussi rajouter les paramètre azote et carbone du milieu pour faire varier le C et N dans la plante .

Voilà l'analyse et l'algorithme

* Créer un nombre de feuilles et de racines avec des surfaces initiales.
* Absorber par les racines une quantité d’azote.
* Absorber par les feuilles une quantité de carbone
* Tant que surface des feuilles et des racines augmente ,la quantité d’azote et de carbone augmente aussi.
* Faire grandir racines et feuilles si
quantité N/Quantité C = 1

* Si C/N < 1 ou N/C>1 faire grandir les feuilles .
* Créer un tableau C/N .Ranger 10 valeurs de 0 à 1 du rapport C/N.
* Créer un tableau surface F de 10 éléments .Ranger les valeurs de la surface des feuilles.
* Afficher les éléments des tableaux .
* Représenter graphiquement la croissance des feuilles en fonction du rapport C/N
* Si N/C <1 ou C/N>1 faire grandir les racines .
* Créer un tableau N/C .Ranger 10 valeurs de 0 à 1 du rapport N/C.
* Créer un tableau surface F de 10 éléments .Ranger les valeurs de la surface des feuilles.
* Afficher les éléments des tableaux .
* Représenter graphiquement la croissance des feuilles en fonction du rapport N/C

Niroken
Re: Analyse

Hello,

D'après ton algo, je vois que la quantité de feuille et de racines est fixée au départ et ne bouge plus, j'ai donc retiré de mon code, les méthodes qui permettaient à la plante de créer feuilles et racines.

J'ai juste ajouté une méthode qui simule le comportement de vie d'une plante.
En gros la simulation se résume à ceci :
Toutes les unités de temps, la plante absorbe des ressources, et décide si elle doit faire grandir ses feuilles ou ses racines en fonction des quantités d'azote et carbone disponibles.
Ensuite la méthode affiche juste à chaque période, la quantité d'azote et de carbone dispo dans la plante.
Par rapport à ton besoin il faudrait aussi ajouter les surfaces des feuilles et des racines, je te laisserais le soin de faire ca.

Une petite chose que je n'ai pas bien compris, tu as parlé de feux facteurs supplémentaires, eau et lumière, or dans ton algo, il n'est nul part mentionné leur impact sur la plante. Pour l'instant donc je n'en ai pas tenu compte.

Voici l'implémentation :

Feuille

package bean;

public class Feuille {
	
	private static double sCoefficientAbsorbCarbone = 1;
	private static double sNeededAzotePourGrandir = 1;
	private static double sNeededCarbonePourGrandir = 1;
	
	private double mSurface;

	public Feuille() {
		mSurface = 0;
	}
	
	public double getSurface() {
		return mSurface;
	}

	public void setSurface(Double surface) {
		mSurface = surface;
	}
	
	public double absorbeCarbone() {
		return mSurface * sCoefficientAbsorbCarbone;
	}
	
	public void faireGrandirFeuille(double pQuantiteAzoteDispo, double pQuantiteCarboneDispo) {
		pQuantiteAzoteDispo = pQuantiteAzoteDispo - sNeededAzotePourGrandir;
		pQuantiteCarboneDispo = pQuantiteCarboneDispo - sNeededCarbonePourGrandir;
		mSurface += 1;
	}
	
}

Racine

package bean;

public class Racine {
	
	private static double sCoefficientAbsorbAzote = 1;
	private static double sNeededAzotePourGrandir = 1;
	private static double sNeededCarbonePourGrandir = 1;
	
	private double mSurface;

	public Racine() {
		mSurface = 0;
	}
	
	public double getSurface() {
		return mSurface;
	}

	public void setSurface(Double surface) {
		mSurface = surface;
	}
	
	public double absorbeAzote() {
		return sCoefficientAbsorbAzote * mSurface;
	}
	
	public void faireGrandirRacine(double pQuantiteAzoteDispo, double pQuantiteCarboneDispo) {
		pQuantiteAzoteDispo = pQuantiteAzoteDispo - sNeededAzotePourGrandir;
		pQuantiteCarboneDispo = pQuantiteCarboneDispo - sNeededCarbonePourGrandir;
		mSurface += 1;
	}
	
}

Plante

package bean;

import java.util.ArrayList;
import java.util.List;

public class Plante {
	
	private double mQuantiteAzote;
	
	private double mQuantiteCarbone;
	
	private double mTempEcoule;
	
	private List<Feuille> mFeuilles;
	
	private List<Racine> mRacines;

	public Plante() {
		mTempEcoule = 0;
		mQuantiteAzote = 0;
		mQuantiteCarbone = 0;
		mFeuilles = new ArrayList<Feuille>();
		mRacines = new ArrayList<Racine>();
	}
	
	public List<Feuille> getFeuilles() {
		return mFeuilles;
	}

	public void setFeuilles(List<Feuille> feuilles) {
		mFeuilles = feuilles;
	}

	public List<Racine> getRacines() {
		return mRacines;
	}

	public void setRacines(List<Racine> racines) {
		mRacines = racines;
	}
	
	public double getQuantiteAzote() {
		return mQuantiteAzote;
	}

	public double getQuantiteCarbone() {
		return mQuantiteCarbone;
	}
	
	private void absorbeRessources() {
		for (Feuille vFeuilleTmp : mFeuilles) {
			mQuantiteCarbone += vFeuilleTmp.absorbeCarbone();
		}
		
		for (Racine vRacineTmp : mRacines) {
			mQuantiteAzote += vRacineTmp.absorbeAzote();
		}
	}
	
	private void faireGrandirFeuilles() {
		for (Feuille vFeuilleTmp : mFeuilles) {
			vFeuilleTmp.faireGrandirFeuille(mQuantiteAzote, mQuantiteCarbone);
		}
	}
	
	private void faireGrandirRacines() {
		for (Racine vRacineTmp : mRacines) {
			vRacineTmp.faireGrandirRacine(mQuantiteAzote, mQuantiteCarbone);
		}
	}
	
	public void simulePlanteLife() {
		for(int i = 0; i < 200; i++) {
			displayPlanteStatus();
			absorbeRessources();
			
			if (mQuantiteAzote == mQuantiteCarbone) {
				faireGrandirFeuilles();
				faireGrandirRacines();
			} else if (mQuantiteAzote > mQuantiteCarbone) {
				faireGrandirFeuilles();
			} else {
				faireGrandirRacines();
			}
			
			mTempEcoule++;
		}
	}
	
	private void displayPlanteStatus() {
		System.out.println(
				"Seconde : " + mTempEcoule +
				" Quantite Carbone : " + mQuantiteCarbone +
				" Quantite Azote : " + mQuantiteAzote);
	}
	
	public static Plante buildSamplePlante() {
		Plante vPlante = new Plante();
		List<Feuille> vFeuilles = new ArrayList<Feuille>();
		List<Racine> vRacines = new ArrayList<Racine>();
		
		Feuille vFeuille0 = new Feuille();
		vFeuille0.setSurface(1d);
		vFeuilles.add(vFeuille0);
		
		Feuille vFeuille1 = new Feuille();
		vFeuille1.setSurface(1d);
		vFeuilles.add(vFeuille1);
		
		Racine vRacine0 = new Racine();
		vRacine0.setSurface(1d);
		vRacines.add(vRacine0);
		
		vPlante.setFeuilles(vFeuilles);
		vPlante.setRacines(vRacines);
		
		return vPlante;
	}
	
}

Program

import bean.Plante;


public class Program {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Plante.buildSamplePlante().simulePlanteLife();
	}

}

Dans mon program j'ai crée une Plante à deux feuilles et une racine, si tu veux avoir un comportement moins "linéaire", il faut jouer sur les coefficient d'absorbtion des racines et des feuilles.

Bonne chance,
Niroken

Jina
Re: Analyse

Merci beaucoup pour ton aide je réfléchis à tout ça !

Je voulais te demander tu a utilisé ArrayList et List pour le nombre de feuilles et de racines ??? Ces pacckages te permettent de faire quoi exactement tu peux m'expliquer?

Ta methode pour construire la plante tu la fais parce que tu devais avoir une plante pour pouvoir simuler sa vie?

et quand tu écris

private void absorbeRessources (){
for (feuilles vFeuilleTmp : mfeuilles ){
mQuantitéCarbone += vFeuilleTmp.absorbeCarbone ();
}

for( feuilles vfeuillestmp :mfeuilles) c'est pour quoi ? c'est pour indiquer que ce qui vient après c'est juste pour les feuilles mais est-ce que c'est obligatoire de préciser à chaque fois le for?

et dernière chose j'ai pas compris quand tu m'as dit qu' il faudrait rajouter les surfaces des feuilles et des racines c'est dans la méthode simuler la vie de la plante que je dois le faire?

merci d'avance pour tes explications

Niroken
Re: Analyse

Hello,

En java, pour représenter une collection on peut utiliser des tableaux :

Feuille[] vFeuilles = new Feuille[2];

Des listes :

List<Feuille> vFeuilles = new ArrayList<Feuille>();

Des maps, des sets, vectors....

L'avantage des listes par rapport aux tableaux, c'est qu'on a pas besoin de préciser la taille de la liste a l'avance, de sorte que si l'on veut ajouter ou retirer un élément cela se fait sans problème, or dans le cas d'un tableau, il faut redéclarer un tableau de taille +1 ou -1 et recopier les éléments du tableau initial dans le nouveau.

Ici dans le cas de la plante, ca s'y prétait bien puisque j'avais pensé qu on avait un nombre de feuilles et de racines indéterminés.

Pour parcourir un élément de type collection à partir de java 1.5 on peut utiliser :

for (Feuille vFeuilleTmp : mFeuilles) {
    mQuantite += vFeuilleTmp.absorbeCarbone();
}

Sinon on peut parcourir cette collection de facon plus classique :

for (int i = 0; i < mFeuilles.size(); i++) {
    mQuantite += mFeuilles.get(i).absorbeCarbone();
}

Dans l exemple ci dessus, je parcours la liste de feuille de la plante, et j 'ajoute a la quantité de carbone de la plante, les quantités de carbones absorbées de chacune de feuilles.

Enfin pour finir, j'avais ajoutés des paramètres sCoefficientAbsorbeCarbone, ce paramètre est utilisé pour savoir quelle est la quantité de carbone absorbée pour chaque feuille par unité de surface.
Ainsi, si tu modifies ce paramètre, ta plante absorberas bcp de carbone. dans le cas contraire, elle n'en absorbera pas beaucoup.

Ce paramètre ainsi que les autres vont donc modifier le comportement de la vie de ta plante.

Bonne chance,
Niroken

Jina
Re: Analyse

merci j'ai compris et je préfère utiliser les tableaux parce que c'est ce que j'ai appris cette année on a pas vu les "Array list"
du coup j' ai tapé le code en faisant des tableaux de feuilles ,de racines,de surface, et de quantité de ressources j'ai rajouté deux données ce sont les Carbone et Azote du milieu que j' obtiens aléatoirement.

J'ai tapé le code sur NetBeans mais ça marche pas alors sais pas pourquoi voici les codes:

[package javaapplication5;

/**
 *
 * 
 */

public class Racine {
   private static double sCoefficientAbsorbAzote = 4;
   private static double sNeededAzotePourGrandir = 1;
   private static double sNeededCarbonePourGrandir = 1;
   private static double mQuantiteAzoteSol;
   private double mSurface;

   public Racine() {
      mSurface = 0;
   }

   public double getSurface() {
      return mSurface;
   }

   public void setSurface(Double surface) {
      mSurface = surface;
   }

   public double absorbeAzote() {
      return sCoefficientAbsorbAzote * mSurface* mQuantiteAzoteSol;
   }

   public void faireGrandirRacine(double pQuantiteAzoteDispo, double pQuantiteCarboneDispo) {
      pQuantiteAzoteDispo = pQuantiteAzoteDispo - sNeededAzotePourGrandir;
      pQuantiteCarboneDispo = pQuantiteCarboneDispo - sNeededCarbonePourGrandir;
      mSurface += 2;
   }



}

package javaapplication5;

/**
 *
 * 
 */



public class Plante {

    private double mQuantiteAzote;

    private double mQuantiteCarbone;

    private double mQuantiteCarboneAtm;

    private double mQuantiteAzoteSol;

    private double mTempEcoule;

    private Feuille [] feuilles;

    private Racine [] racines;



    public Plante () {

      mTempEcoule = 0;
      mQuantiteAzote = 0;
      mQuantiteCarbone = 0;
      Feuille feuilles [] = new Feuille [3];
      Racine racines  [] = new Racine [5];
        for (int f = 0;f<3 ; f ++){
         feuilles [f] = new Feuille();
        }
        for (int r = 0; r<5 ; r++) {
         racines [r] = new Racine ();
        }
     }

   public Feuille [] getFeuilles() {
      return feuilles;
   }

   public void setFeuilles(Feuille [] feuilles) {
      feuilles = feu;
   }

   public Racine [] getRacines() {
      return racines;
   }

   public void setRacines(Racine[]racines) {
      racines = rac;
   }

   public double getQuantiteAzote() {
      return mQuantiteAzote;
   }

   public double getQuantiteCarbone() {
      return mQuantiteCarbone;
   }
   public double getQuantiteCarboneAtm() {
       return mQuantiteCarboneAtm;
   }
   public double getQuantiteAzoteSol(){
       return mQuantiteAzoteSol;
   }
   public double getTempEcoule (){
       return mTempEcoule;
   }

  public void absorbeRessources() {
      for (int f= 0;f<3 ;f++) {
         mQuantiteCarbone += feuilles[f].absorbeCarbone();
      }

      for (int r = 0; r < 5;r++) {
         mQuantiteAzote += racines[r].absorbeAzote();
      }
   }

  private void faireGrandirFeuilles() {
      for (int f = 0;f<3;f++) {
         feuilles[f].faireGrandirFeuille(mQuantiteAzote, mQuantiteCarbone);
      }
   }

  private void faireGrandirRacines() {
      for (int r = 0; r<5; r++) {
         racines[r].faireGrandirRacine(mQuantiteAzote, mQuantiteCarbone);
      }
   }

  public void simulePlanteLife() {
       
      if (mQuantiteAzote == mQuantiteCarbone) {
            faireGrandirFeuilles();
            faireGrandirRacines();
      }
      else if (mQuantiteAzote > mQuantiteCarbone) {
            faireGrandirFeuilles();
      }
      else {
            faireGrandirRacines();
      }

       
      
   }

 
   }

class Feuille {
   private static double sCoefficientAbsorbCarbone = 2;
   private static double sNeededAzotePourGrandir = 1;
   private static double sNeededCarbonePourGrandir = 1;
   private static double mQuantiteCarboneAtm;
   private double mSurface;

   public Feuille() {
      mSurface = 0;
   }

   public double getSurface() {
      return mSurface;
   }

   public void setSurface(Double surface) {
      mSurface = surface;
   }

   public double absorbeCarbone() {
      return mSurface * sCoefficientAbsorbCarbone* mQuantiteCarboneAtm;
   }

   public void faireGrandirFeuille(double pQuantiteAzoteDispo,double pQuantite  CarboneDispo){
      pQuantiteAzoteDispo = pQuantiteAzoteDispo - sNeededAzotePourGrandir;
      pQuantiteCarboneDispo = pQuantiteCarboneDispo - sNeededCarbonePourGrandir;
      mSurface += 2;
   }

}

import java.util.*;
public class Milieu {

 /**
    * @param args
    */
   public static void main(String[] args) {
     Plante Pt = new Plante();
     Racine Ra = new Racine ();
     Feuille Fe = new Feuille ();

     double tabAz[] = new double [300];
     double tabCarb[] = new double [300];
     double tabSfFe[] = new double [300];
     double tabSfRa [] = new double [300];

     for (int i = 0; i<0;i++){
         tabAz[i] = 0;
         tabCarb[i] = 0;
         tabSfFe[i] = 0;
         tabSfRa[i] = 0;
    }
     Random alea = new Random ();
     double mQuantiteAzoteSol = alea.nextDouble();
     double mQuantiteCarboneAtm = alea.nextDouble();

     for (int i = 0; i<200;i++) {
         Pt.absorbeRessources();
         Pt.simulePlanteLife();
         tabAz[i] = Pt.getQuantiteAzote();
         tabCarb[i] = Pt.getQuantiteCarbone();
         tabSfFe[i] = Fe.getSurface();
         tabSfRa[i] = Ra.getSurface();
         System.out.println(  "QuantiteCarbone :"+tabCarb[i]+
                 "QuantiteAzote:"+tabAz[i]+"Surface feuille :"
                 +tabSfFe[i]+"Surface racine:"+ tabSfRa[i]);
     }

   }

Merci encore

Niroken
Re: Analyse

Hello,

J'ai corrigé ton code,je te transmets juste les classes modifiées :

Milieu :

import java.util.*;

import javaapplication5.Plante;
public class Milieu {

/**
    * @param args
    */
   public static void main(String[] args) {
     Plante Pt = new Plante();
     
     double tabAz[] = new double [300];
     double tabCarb[] = new double [300];
     double tabSfFe[] = new double [300];
     double tabSfRa [] = new double [300];

     for (int i = 0; i<0;i++){
         tabAz[i] = 0;
         tabCarb[i] = 0;
         tabSfFe[i] = 0;
         tabSfRa[i] = 0;
    }
     Random alea = new Random ();
     double mQuantiteAzoteSol = alea.nextDouble();
     double mQuantiteCarboneAtm = alea.nextDouble();

     for (int i = 0; i<200;i++) {
         Pt.absorbeRessources();
         Pt.simulePlanteLife();
         tabAz[i] = Pt.getQuantiteAzote();
         tabCarb[i] = Pt.getQuantiteCarbone();
         System.out.println(  "QuantiteCarbone :"+tabCarb[i]+
                 "QuantiteAzote:"+tabAz[i]+"Surface feuille :"
                 +tabSfFe[i]+"Surface racine:"+ tabSfRa[i]);
     }

   }
}

Plante :

package javaapplication5;

/**
*
* 
*/



public class Plante {

    private double mQuantiteAzote;

    private double mQuantiteCarbone;

    private double mQuantiteCarboneAtm;

    private double mQuantiteAzoteSol;

    private double mTempEcoule;

    private Feuille [] feuilles;

    private Racine [] racines;



    public Plante () {

      mTempEcoule = 0;
      mQuantiteAzote = 0;
      mQuantiteCarbone = 0;
      feuilles  = new Feuille [3];
      racines   = new Racine [5];
        for (int f = 0;f<3 ; f ++){
         feuilles [f] = new Feuille();
        }
        for (int r = 0; r<5 ; r++) {
         racines [r] = new Racine ();
        }
     }

   public Feuille [] getFeuilles() {
      return feuilles;
   }

   public void setFeuilles(Feuille [] feuilles) {
      this.feuilles = feuilles;
   }

   public Racine [] getRacines() {
      return racines;
   }

   public void setRacines(Racine[]racines) {
	   this.racines = racines;
   }

   public double getQuantiteAzote() {
      return mQuantiteAzote;
   }

   public double getQuantiteCarbone() {
      return mQuantiteCarbone;
   }
   public double getQuantiteCarboneAtm() {
       return mQuantiteCarboneAtm;
   }
   public double getQuantiteAzoteSol(){
       return mQuantiteAzoteSol;
   }
   public double getTempEcoule (){
       return mTempEcoule;
   }

  public void absorbeRessources() {
      for (int f= 0;f<3 ;f++) {
         mQuantiteCarbone += feuilles[f].absorbeCarbone();
      }

      for (int r = 0; r < 5;r++) {
         mQuantiteAzote += racines[r].absorbeAzote();
      }
   }

  private void faireGrandirFeuilles() {
      for (int f = 0;f<3;f++) {
         feuilles[f].faireGrandirFeuille(mQuantiteAzote, mQuantiteCarbone);
      }
   }

  private void faireGrandirRacines() {
      for (int r = 0; r<5; r++) {
         racines[r].faireGrandirRacine(mQuantiteAzote, mQuantiteCarbone);
      }
   }

  public void simulePlanteLife() {
       
      if (mQuantiteAzote == mQuantiteCarbone) {
            faireGrandirFeuilles();
            faireGrandirRacines();
      }
      else if (mQuantiteAzote > mQuantiteCarbone) {
            faireGrandirFeuilles();
      }
      else {
            faireGrandirRacines();
      }

       
      
   }


   }

En revanche, je ne vois pas trop à quoi sert ta classe Milieu.
Apparemment tu as essayé de faire un système de sauvegarde de l'état de la plante à chaque instant t.
Mais il aurait mieux valu que tu fasses, une méthode interne a la classe Plante qui te renvoit à la limite un String pour l'état de la plante, ou alors au mieux une structure de données qui te sauvegarde ces infos en vue de les écrire plus tard dans un fichier par exemple.

A l'heure atuelle ce qui marche donc, c'est que tu affiches les quantités de carbone et d azote absorbées par la plante en fonction du temps.

Bonne chance,
Niroken

Jina
Re: Analyse

Merci bcp :D pour ton aide tu m'a pas mal aidé maintenant je vais voir avec ma prof d'info comment représenter les resultats je vais lui demander de m'aider à faire des courbes QCarbone & QAzote en fct du temps.
@+