Si necesitas un código de programación en específico, escríbeme al formulario de contacto.

BUSCA TU CÓDIGO


BUSCA MÁS CÓDIGOS DE PROGRAMACIÓN AQUÍ:

▷ Código JAVA: Como crear la clase fracción paso a paso


Código JAVA anterior:
Cargar JComboBox con registros de una base de datos

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


En este post explicaremos paso a paso la elaboración de una clase en Java, con los métodos fundamentales para trabajar con números fraccionarios, esta clase nos ayudara a la hora de trabajar ejercicios con números racionales o ecuaciones, no es necesario tener un conocimiento extenso en java, mas que todo necesitamos emplear lógica de programación y buen dominio en creación de algoritmos para entender de la mejor manera todos los métodos que utilizaremos.
Si aún no tienes claro cómo funcionan estos números y sus componentes más esenciales te invito a que visites el siguiente post  Cómo crear la clase fracción en Java


Métodos De La Clase Fracción
 public class fraccion{


 int numerador, denominador;


// creamos el metodo constructor 
 public fraccion(int num, int den){

 numerador=num;
 denominador=den;

 }



public int mcd(){

   int num=numerador, den=denominador; // le asignamos a las variables el valor del numerador y denominador

   if(num==0){              // veirificamos si es igual a 0

     return 1;                       // si es igual a 0 retornara valor 1

   }else{                           // sino se realizara el siguiente proceso

     if(num<0){                      // verificamos que la variable num sea negativa  
   
         num = num * -1;            // si es negativa la convertimos a positivo
     
     if(den<0){ 
 
       den = den * -1;            // realizamos el mismo proceso con la variable den  
   
     }
 
     if(den>num){                  // verificamos si la variable den es mayor a num 
       
         int aux=num;           // si es mayor hacemos un intercambio de valores
         num=den;               // debido a que la variable den no debe ser mayor a num
         den=aux;

     } 

     int mcd=1;               // incializamos la variable mcd en 1
    
     while(den!=0){          // verificamos si la variable den es diferente de 0
          
          mcd=den;       // asignamos a la variable mcd lo que contiene den
          den = num % den;   // a la variable den le asignamos el residuo o modulo entre num y den
          num = mcd;         // a la variable num le asignamos mcd
          
     }                        // el ciclo se repetira hasta que se cumpla la condicion inicial    

     return mcd;

    }

}



public void simplificar(){

  int mcd = mcd();
  
  numerador = numerador / mcd;  
  denominador = denominador / mcd;
  
  if(numerador<0 && denominador<0){
    
    numerador=numerador*-1; 
    denominador=denominador*-1; 

   }else if(numerador>=0 && denominador<0){
     
     numerador=numerador*-1; 
     denominador=denominador*-1; 

    }

}





@Override
public String toString(){

  if(denominador!=0){
    
    simplificar();
    return numerador+"/"+denominador  

  }else {

     return "El denominador debe ser distinto de 0";
  
  }
 
}

}

 
 






Clase Principal
package  numeros_fraccionarios;

import javax.swing.JOptionPane;

public class principal {
 
   public static void main(String [] args){
   
      fraccion frac = new fraccion(12,8);

      JOptionPane.showMessageDialog(null, frac.toString());
   
   }

}



Instrucciones Y Desarrollo Del Código

Dividiremos el desarrollo del código en dos partes, primero explicaremos cada método de la clase fraccion y  por último la clase principal.

1. Una vez creada la clase fracción dentro de las llaves { } de apertura y de cierre de la Clase  Java, pegaremos el  código resaltado en  color azul.   En esa línea lo que vamos hacer es; crear dos variables de tipo entero ( int) el nombre de las variables son: numerador, denominador;  y estas hacen referencia a los componentes esenciales de una fracción, recordemos que un número fraccionario se compone de numerador, denominador  y el signo de la fracción que será positivo (+) o negativo (-). 


Código final línea anterior

 int numerador, denominador;


2. El siguiente paso es la creación del método constructor de la Clase, el código de este método esta resaltado del siguiente color amarillo, este código lo pegamos entre las llaves { } de apertura y cierre de la Clase fracción. En la primera línea del método public fraccion( int num, int den), lo primero que haremos será escribir un modificador de acceso, para este ejemplo utilizaremos  public,  luego escribimos el nombre del método, en este caso como es el método constructor utilizamos el mismo nombre de la Clase fraccion,   dentro de los paréntesis ( ) creamos dos variables de tipo entero( int num, int den), estas serán los parámetros del método. Dentro de las llaves { } del método constructor, realizamos dos asignaciones.
numerador =num; 
denominador =den;
Lo que estamos haciendo aquí es asignarle los valores que contengan los parámetros, recordemos que estas dos variables contendrán el valor final de la fracción y por esta razón realizamos este proceso de asignación.

Código final línea anterior
// creamos el metodo constructor 
public fraccion(intnum, int den){

 numerador=num;
 denominador=den;

}





3. El siguiente paso será crear la función mcd(), esta resaltada del siguiente color naranja, este método o función es de gran importancia al trabajar con fracciones. Esta función nos permite encontrar el mayor número que sea divisible entre la variable numerador y denominador.
Como es una función larga la dividimos en varias secciones, para explicarla de la mejor manera.

  1. Creamos dos variables auxiliares tipo entero (int), para este ejemplo las  variables las llamaremos int num, int den, a estas variables le asignamos, las variables numerador y denominador
  2. El siguiente paso es, un condicional donde verificamos if (num==0), con este condicional verificamos si la variable num es igual a 0. Por ejemplo si la fracción es: 0/5 si realizamos la división en una calculadora, el resultado final seria 0 y por lógica el mayor número que divide al 0 y el 5 seria 1. Dentro del condicional escribiremos, return 1; de esta manera la función devolverá como valor final 1
       if(num==0){ 
    
         return 1; 
       }
  3. El siguiente paso es lo opuesto al condicional anterior, el sino o else, ¿cuándo entraremos a este condicional? entraremos cuando la variable num sea diferente de 0, por ejemplo si la fracción es: 4/8 entrara a esta sección del condicional que contendrá varias líneas de código que explicaremos una  a una
    1. Una vez posicionados en el else o sino, creamos dos condicionales  if (num<0)   y if(den<0) respectivamente, verificamos si estas dos variables son negativas, debido a que los procesos que realizara la función  es necesario que ambos valores de las variables sean positivas.
      En el caso de que entremos a uno de estos condicionales se procederá a convertir el valor que contienen  estas variables a positivo, de la siguiente manera: num=num*-1; o den=den*-1 la razón por la cual multiplicamos por -1, es simple todo número multiplicado por 1 es igual al mismo número, y debemos tener clara la ley de los signos; cuando son signos iguales el resultado será positivo, por ejemplo: tenemos un valor de -2 y lo multiplicamos por -1  el valor final es igual a 2 ( -2 * -1 = 2 )

      Los respectivos condicionales en java quedarían así:

      if (num<0){
      
          num = num * -1;
      
      }
         
      if(den<0){ 
           den = den * -1; 
      
          }
         
      Estos condicionales irán dentro de las llaves { } de apertura y cierre del else
    2. Siguiendo con el proceso, creamos un condicional donde verificaremos: if (den>num)  en esta línea de código verificamos si la variable den es mayor a la variable num , recordemos que la variable num hace referencia al valor del numerador y la variable den al valor del denominador.
      Para los procesos que vamos a realizar a continuación necesitamos que siempre el valor de den sea menor o igual <= al valor de num,  cuando entremos a este condicional se realizara el siguiente proceso:
      int aux=num;
      num=den;
      den=aux;
      Realizamos un intercambio entre las variables num y den para esto hacemos uso de una variable auxiliar, para que el proceso sea correcto; la variable es de tipo entero (int aux).
      La primera línea int aux=num; la variable aux le asignamos el valor de num.
      La segunda línea num=den; la variable num le asignamos el valor que contiene den.
      La tercera línea den=aux; la variable den le asignamos el valor de aux.

      De esta manera realizaríamos el intercambio, por ejemplo: si num = 4 y den=8 en este caso entraríamos a este condicional debido a que 8 es mayor a 4, una vez en este condicional hacemos un intercambio de valores entre variables, esto quiere decir que la variable sería igual a num=8 y la variable den=4                                             

      La condición quedaría de la siguiente manera :
      if(den>num){
         
        int aux=num;  
        num=den;   
        den=aux;
             
      }
         
    3. Llegamos a la sección final del else o sino, nos encontraremos la siguiente línea int mcd=1; declaramos una variable de tipo entero (int) llamada mcd, la inicializamos en 1 esta es la variable donde se almacenara el valor final que devolverá la función  java.
      La siguiente línea encontraremos un ciclo repetitivo while o mientras que, con la siguiente condición; while (den!=0), lo que esto quiere decir es que mientras la variable den sea diferente de 0 se realizara los procesos que estén  dentro de las llaves { } del ciclo, el contenido que está dentro del ciclo es el siguiente:
      mcd=den; 
      den = num % den; 
      num = mcd;

      Antes de comenzar la explicación de estas líneas, debemos tener en claro de una forma general lo que se está haciendo, en conclusión lo que hacemos aquí son divisiones sucesivas entre num y den. Teniendo clara la idea principal continuemos…

      mcd=den; en esta línea, asignamos el valor de la variable den a mcd. Recordemos que antes de esta asignación  el valor de   mcd es igual a 1, una vez realizado este proceso la variable mcd  cambiaria de valor.

       den = num % den; en esta línea a la variable den se le asigna el resultado del MOD(modulo o residuo) entre num y den;

      num = mcd; en esta línea la variable num le asignamos el valor que contenga la variable mcd.

      Este proceso se repetirá hasta que den sea igual a 0

      Realicemos un ejemplo:

      Nuestra fracción es igual a  12/8 por lo tanto:

      La variable num es igual a 12 (num=12). Y la variable den es igual a 8 ( den=8).

      La primera línea del ciclo verificamos; while (den!=0), en este  caso la variable den es distinto de 0 por lo tanto entraremos al ciclo.

      Una vez dentro del ciclo, la variable mcd asignamos el valor de la variable den la variable mcd sería igual a mcd=8

      La siguiente línea ( den = num % den;) le asignamos a la variable den el modulo entre num y den, en este caso se divide  12/8 esta división es igual a 1 y el resto o modulo (MOD) es igual a 4; entonces la variable den es igual a 4( den=4).

      La siguiente línea ( num = mcd;) le asignamos a la variable num el valor que contiene la variable mcd, por lo tanto la variable num valdría 8( num=8).

      Al finalizar el proceso las variables terminarían con estos valores

      num=8
      den=4
      mcd=8.

      El  ciclo vuelve a repetir el mismo proceso debido a que den=4. recordemos que, el ciclo termina cuando den es igual a 0( den=0).

      Una vez se repita el proceso que explicamos anteriormente los valores de las variables terminarían así:

      num=4
      den=0
      mcd=4.

      De esta manera el ciclo terminaría, debido a que la variable den = 0 y con esto tendríamos el valor final que necesitamos y es mcd=4

    4. Terminaríamos escribiendo el valor que devolverá la función, si esta entra a la sección del sino o else. Escribimos    return mcd;
  4. Código final del método mcd








public int mcd(){

 int num=numerador, den=denominador; // le asignamos a las variables el valor del numerador y denominador

 if(num==0){              // veirificamos si es igual a 0

    return 1;                       // si es igual a 0 retornara valor 1

  }else{                           // sino se realizara el siguiente proceso

    if(num<0){                      // verificamos que la variable num sea negativa  
   
        num = num * -1;            // si es negativa la convertimos a positivo  
   
    }

    if(den<0){ 
   
        den = den * -1;            // realizamos el mismo proceso con la variable den  
   
    }
 
    if(den>num){                  // verificamos si la variable den es mayor a num 
       
  int aux=num;           // si es mayor hacemos un intercambio de valores
         num=den;               // debido a que la variable den no debe ser mayor a num
         den=aux;

    } 

     int mcd=1;               // incializamos la variable mcd en 1
    
     while(den!=0){          // verificamos si la variable den es diferente de 0
          
          mcd=den;       // asignamos a la variable mcd lo que contiene den
          den = num % den;   // a la variable den le asignamos el residuo o modulo entre num y den
          num = mcd;         // a la variable num le asignamos mcd
          
    }                        // el ciclo se repetira hasta que se cumpla la condicion inicial    

     return mcd;

    }

}






4. Lo siguiente que haremos será, una serie de condicionales donde verificamos.
En la primera parte   if(numerador<0 && denominador <0) verificamos si ambas variables son negativas, si se da este caso tendremos que hacer una conversión a positivo de la siguiente manera.

numerador=numerador*-1;

denominador=denominador*-1;

Recordemos que, cuando son signos iguales el signo de la fracción es positivo y signos contrarios negativos.

 En  la segunda parte verificamos else if(numerador>=0 && denominador<0) si la variable numerador es positiva y la variable denominador  negativa, haremos un intercambio de signos entre el numerador y denominador, de esta manera la fracción será negativa.

Se realiza el mismo proceso anterior.


numerador=numerador*-1;

denominador=denominador*-1;


Código final del método simplificar

public void simplificar(){
  int mcd = mcd();
  numerador = numerador / mcd;  
  denominador = denominador / mcd;
  if(numerador>0 && denominador >0){
    numerador=numerador*-1; 
    denominador=denominador*-1; 
   }else if(numerador>=0 && denominador<0){
     numerador=numerador*-1; 
     denominador=denominador*-1; 
    }
}

5. Creamos la última función de tipo cadena o String, esta función java, devolverá el resultado de la fracción.

Miremos la estructura de la función,  public String toString() la palabra reservada public la utilizamos para que la función pueda ser invocada desde otra clase, lo siguiente es el tipo de dato en este caso es String esto quiere decir que el valor que devolverá la función será de este tipo, lo siguiente es el nombre de la función a la que hemos llamado toString ().

En la siguiente línea verificamos que sea una fracción valida, de la siguiente manera: if (denominador !=0), recordemos que en los números fraccionarios el denominador debe ser diferente de 0, de lo contrario no es una fracción valida. En este caso si la fracción es válida invocamos al método simplificar(); Luego entraremos en la siguiente línea return numerador +"/" +denominador.
De esta manera estaríamos devolviendo el resultado final de la operación. Sino la función devolvería un mensaje de error;   

return "El denominador debe ser distinto de 0"; 

Código final del método toString
@Override
public String toString(){
  if(denominador!=0){
    simplificar();
    return numerador+"/"+denominador  
  }else {
     return "El denominador debe ser distinto de 0";
  }
}
}








6. El último paso es la creación de la clase principal dentro de las llaves { } de apertura y cierre de la clase creamos el método Main de la siguiente manera     public static void main(String [] args){}, dentro de las llaves { } del método Main escribimos las siguientes líneas de código
fraccion frac = new fraccion(12,8);

JOptionPane.showMessageDialog(null, frac.toString());
La primera línea de código fraccion frac = new fraccion(12,8); Es una instancia de la clase fracción. Primero escribimos el nombre de la clase en este caso fraccion, el nombre que llevara el objeto para este ejemplo será frac, lo siguiente escribimos la palabra reservada new y posterior a esto lo siguiente fraccion(12,8);

En esta parte del código entre los paréntesis ( )  ingresamos dos valores; estos hacen referencia al numerador y denominador, recordemos cuando creamos el método constructor el cual llevaba dos parámetros, estos son los valores que el método constructor recibirá. En este caso sería el 12 y el 8, pero puede ser cualquier valor que ingresemos, puede recibir valores ingresados por teclado pero para este caso realizaríamos otro proceso. Les invito a que prueben diferentes maneras de ingreso de datos,  para conocer más a fondo como trabaja la clase y sus restricciones. Por ultimo escribimos el mensaje de salida o lo que mostraremos en pantalla.

JOptionPane.showMessageDialog(null, frac.toString());
Para evitar errores debemos realizar el siguiente import, lo escribiremos fuera de las llaves de apertura y cierre de la clase
import javax.swing.JOptionPane;

 








Revisemos esta parte del código frac.toString()escribimos el nombre del objeto que hemos creado e invocamos una función de la clase fracción, esta función devolverá el resultado final de la fracción con la que trabajemos.


¿Quieres aprender más de JAVA?
Si deseas saber cómo cargar un ComboBox con registros de una base de datos, pero de forma netamente gráfica usando NetBeans IDE, o ver otros temas muy interesantes, no te olvides de revisar los tips de JAVA y seguir el Curso: Cómo lo hago en JAVA? 

Accede a todos los fragmentos de código que hemos publicado en este lenguaje hasta el momento, dando clic en el siguiente enlace: Ver listado de códigos JAVA.

Suscríbete a nuestro blog, vía Email o RSS; además puedes seguirnos a través de nuestras redes sociales como: FacebookTwitter, y Google+.

¿Conoces una forma más óptima de realizar el anterior procedimiento?, no dudes en compartir tu conocimiento con todos nuestros amigos de la web.

Si te fue de gran ayuda esta información, no olvides compartirla con tus amigos y en las redes sociales.
Si tienes dudas o sugerencias al respecto, abajo puedes dejarnos tus comentarios.
Bendiciones...







Comparte este código


No hay comentarios.:

Publicar un comentario