
package equation2nddegre;
                                                                     
/** Equation du second degré version objet, deuxième version
 * le calcul des racines est mémorisé
 */
public class EquationObj1 {
  private double a, b, c;
  private double racine1 = Double.NaN;  // NaN === NaN ne marche pas
  private double racine2 = Double.NaN;  // mais Double.isNaN(Double.NaN) marche

  /** crée une équation (instance de EquationObj1)
   * @param a, b, c les coefficients de cette equation
   */
   public EquationObj1(double a, double b, double c) {
     this.a = a;
     this.b = b;
     this.c = c;
     }

  /** résout cette équation et mémorise les racines */
  public void resolution() {
     this.racine1 = (-this.b + Math.sqrt(this.delta()))/(2*this.a);
     this.racine2 = (-this.b - Math.sqrt(this.delta()))/(2*this.a);
     }

   /** renvoie le discriminant de cette équation */
  private double delta() {return this.b * this.b - 4 * this.a * this.c;}

  /** renvoie  une racine de cette équation */
  public double getRacine1() { return(this.racine1); }
 
  /** renvoie l'autre racine de cette équation */
  public double getRacine2() { return(this.racine2); }

  /** renvoie une représentation sous forme de chaine de cette équation
   * et de ses racines si elles ont été calculées
   */
  public String toString() {
     String chaine = "\néquation (version objet avec attributs racines) "+
                     this.a+" x^2 + "+this.b+" x + "+this.c+" = 0";
     if (Double.isNaN(this.racine1))
             chaine = chaine + "\n il n'y a pas (ou pas encore) de racines";
     else chaine += "\nracines "+ this.racine1+ " et "+this.racine2;
     return(chaine);
    }

}
