miércoles, 10 de abril de 2019

LA CLASE Fraccion

Hoy les dejo la implementación de la clase Fraccion (Quebrados) según la aritmética. Como sabemos una fracción tiene un numerador, denominador y un signo ya sea positivo o negativo los cuales éstos sería los atributos de la clase Fraccion y el comportamiento (métodos) de una fracción es cambiar de signo, simplificar, procesar, etc.
Este último método lo llamé así y lo explico mediante algunos ejemplos:




En el método toString( ) (método override), nos muestra la fracción con el signo + o - de la fracción entre paréntesis, si no tiene signo sabemos que es positivo.

Veamos la implementación de esta clase:

package proyfraccion;
/**
 *
 * @author CrysMario
 */
public class Fraccion {
    private int numerador;
    private int denominador;
    private int signo;

    public Fraccion() {
        this.numerador = 1;
        this.denominador = 1;
        this.signo = 1;
    }

    public Fraccion(int numerador, int denominador) {
        this.numerador = numerador;
        this.denominador = denominador;
        this.signo = 1;
    }

    public int getNumerador() {
        return numerador;
    }

    public int getDenominador() {
        return denominador;
    }
    
    public int getSigno() {
        return signo;
    }
    
    public void setNumerador(int numerador) {
        this.numerador = numerador;
    }

    public void setDenominador(int denominador) {
        this.denominador = denominador;
    }

    public void cambiarSigno() {
        signo *= -1;
    }
    
    public void procesar() {
        if (numerador >= 0 && denominador < 0)
            signo = -1;
        else if (numerador < 0 && denominador >= 0)
            signo = -1;
        numerador = Math.abs(numerador);
        denominador = Math.abs(denominador);
    }
    
    public void invertir() {
        int aux = numerador;
        numerador = denominador;
        denominador = aux;
    }
    
    public void simplificar() {
        System.out.println("Simplificando...");
        int cont = 2;
        while (cont <= Math.abs(numerador) && cont <= Math.abs(denominador)) {
            if (numerador % cont == 0 && denominador % cont == 0) {
                numerador = numerador / cont;
                denominador = denominador / cont;
                System.out.println(toString());
            }
            else
                cont++;
        }
        System.out.println("Fin");
    }
    
    public double getResultado() {
        try {
            return (double) numerador / (double) denominador;
        } catch (Exception e) {
            System.out.println("Error: División por CERO.");
            return 0;
        }
    }

    @Override
    public String toString() {
        if (signo == 1)
            return "(" + numerador + "/" + denominador + ")";
        else
            return "-(" + numerador + "/" + denominador + ")";
    }
}

Y en el método main( ) podemos hacer lo siguiente:

    public static void main(String[] args) {
        Fraccion f = new Fraccion(18, 27);
        System.out.println(f.toString());
        f.simplificar();
        System.out.println(f.toString());
        f.procesar();
        System.out.println(f.toString());
        System.out.println(f.getResultado());
    }

Una vez ejecutado esta aplicación, nos mostrará lo siguiente:

run:
(18/27)
Simplificando...
(6/9)
(2/3)
Fin
(2/3)
(2/3)
0.6666666666666666
BUILD SUCCESSFUL (total time: 0 seconds)

Si quieren adquirir el programa completo en Java + Netbeans, comente solicitando la aplicación y no olvidar el correo electrónico para enviar.
If you want to acquire the entire program in Java + Netbeans, comment requesting the application and do not forget comment your email.

3 comentarios: