// Bosquejo de un programa para manipular Numeros doubles
// Autor: Antonio Carrillo Ledesma
// http://mmc.geofisica.unam.mx/acl/


public class Double extends Numero {
//~ public class Fraccion {

   // Numero
   private double D;
   // Denominador de la fraccion

   // Constructor nulo
   public Double() {
      D = 0;
   }

   // Constructor con un objeto Double
   public Double (Double a) {
      D = a.valor();
   }

   // Constructo con el valor d
   public Double (double d) {
      D = d;
   }

   // Genera un nuevo miembro de la clase
   public Numero nuevo() {
      Numero c = new Double();
      return c;
   }

   // Retorna el valor
   public double valor() {
      return D;
   }


   // Regresa verdadero si es la fraccion cero
   public boolean esCero() {
      if (valor() == 0.0) return true;
      return false;
   }


   // Suma de doubles con dos operandos
   public void suma(Numero A, Numero B) {
      Double a = new Double( (Double) A);
      Double b = new Double( (Double) B);

      D = a.valor() + b.valor();
   }

   // Suma de doubles con dos operandos
   public void suma(Numero A) {
      Double a = new Double( (Double) A);

      D = valor() + a.valor();
   }


   // Visualiza la Fraccion
   public void visualiza() {
      System.out.print(D);
   }


   // Ejemplito de uso ...
   public static void main(String[] args) {
      Double a, b, c;
      a = new Double(1);
      b = new Double(2);
      c = new Double();

      a.visualizaLN();
      b.visualizaLN();


      System.out.println("Suma");
      a.visualiza();
      System.out.print(" + ");
      b.visualiza();
      System.out.print(" = ");
      c.suma(a, b);
      c.visualizaLN();

   }
};