

public class Complejos {

   private Fraccion R;
   private Fraccion I;


   // Constructores
   public Complejos() {
      R = new Fraccion();
      I = new Fraccion();
   }

   public Complejos(Fraccion r, Fraccion i) {
      R = new Fraccion(r);
      I = new Fraccion(i);
   }

   public Complejos(Fraccion r) {
      R = new Fraccion(r);
      I = new Fraccion();
   }

   public Complejos(long p1, long q1, long p2, long q2) {
      R = new Fraccion(p1, q1);
      I = new Fraccion(p2, q2);
   }

   public Complejos(long p1, long q1) {
      R = new Fraccion(p1, q1);
      I = new Fraccion();
   }

   public Fraccion parteReal() {
      return R;
   }

   public Fraccion parteImaginaria() {
      return I;
   }

   public void suma(Complejos a) {
      R.suma(a.parteReal());
      I.suma(a.parteImaginaria());
   }

   public void suma(Complejos a, Complejos b) {
      R.suma(a.parteReal(), b.parteReal());
      I.suma(a.parteImaginaria(), b.parteImaginaria());
   }

   public void resta(Complejos a) {
      R.resta(a.parteReal());
      I.resta(a.parteImaginaria());
   }

   public void resta(Complejos a, Complejos b) {
      R.resta(a.parteReal(), b.parteReal());
      I.resta(a.parteImaginaria(), b.parteImaginaria());
   }


   /*
      public void multiplicacion(Complejos a, Complejos b) {
         Fraccion r1, r2, i1, i2;
         r1 = new Fraccion();
         r2 = new Fraccion();
         i1 = new Fraccion();
         i2 = new Fraccion();
         r1.Multiplicacion(a.parteReal(),b.parteReal());
         r2.Multiplicacion(b.parteImaginaria(), b.parteImaginaria());
         ...
         R.resta(r1, r2);
         ...
      }
   */

   // Visualiza sin cambiar de linea
   public void visualiza() {
      R.visualiza();
      System.out.print(" + ");
      I.visualiza();
      System.out.print("i");
   }

   // Visuliza y cambia de linea
   public void visualizaLN() {
      R.visualiza();
      System.out.print(" + ");
      I.visualiza();
      System.out.println("i");
   }

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


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


      System.out.println("Suma de un operando");
      a.visualiza();
      System.out.print(" + ");
      b.visualiza();
      System.out.print(" = ");
      a.suma(b);
      a.visualizaLN();
   }


};

