lunes, 8 de abril de 2019

OPERACIONES BASICAS DE ARITMÉTICA (POO)

Empecemos con una aplicación que nos permita hacer las operaciones básicas de la aritmética como suma(+), resta(-), producto(*), división(/), módulo(%) y potencia(^) de dos operandos de tipo double.

Podemos hacer de una forma fácil y directa de la siguiente manera:

public static void main(String[] args) {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double op1, op2;
        System.out.print("Introduzca el primer operando: ");
        op1 = sc.nextDouble();
        System.out.print("Introduzca el segundo operando: ");
        op2 = sc.nextDouble();
        System.out.println(op1 + op2);
        System.out.println(op1 - op2);
        System.out.println(op1 * op2);
        System.out.println(op1 / op2);
        System.out.println(op1 % op2);
        System.out.println(Math.pow(op1, op2));
    }

}


Como dije anteriormente, es posible que este código sea muy sencillo de programar y más fácil de entender para principiantes en Java. La finalidad de este blog es aprender cómo funciona el paradigma de Programación Orientada a objetos, y lo programaremos así para ir entendiendo mejor y facilitar más la programación utilizando la POO, además que la explicación está en el mismo código como comentarios Java.

A continuación creamos una aplicación Java en Netbeans con el nombre de MatematicaBasica (esto es opcional) y tendremos algo así:

package matematicabasica;
/**
 *
 * @author CrysMario
 */
public class MatematicaBasica {

    public static void main(String[] args) {
        
    }
}

Ahora creamos las clases dentro del mismo paquete por defecto o como uds. quieran, la primer clase que vamos a implementar es la clase abstracta OperacionBasica:

package matematicabasica;
/**
 *
 * @author CrysMario
 */
/*
  Cuando declaramos una clase abstracta,
  significa que esta clase no puede ser
  instanciada, por lo que instaciaremos
  las clases que heredan de ésta.
*/
abstract class OperacionBasica {
    private double operando1;
    private double operando2;

    public OperacionBasica() {
        this.operando1 = this.operando2 = 1;
    }

    public OperacionBasica(double operando1, double operando2) {
        this.operando1 = operando1;
        this.operando2 = operando2;
    }

    public double getOperando1() {
        return operando1;
    }

    public double getOperando2() {
        return operando2;
    }

    public void setOperando1(double operando1) {
        this.operando1 = operando1;
    }

    public void setOperando2(double operando2) {
        this.operando2 = operando2;
    }
    
    @Override
    public String toString() {
        return "Operaciones Básicas{" + "operando1 = " + operando1
                + ", operando2 = " + operando2 + '}';
    }
}

Ahora creamos las clases que heredan de la clase abstracta OperacionBasica, éstas son Suma, Resta, Producto (Multiplicación), Division, Modulo(Resto) y Potencia.

package matematicabasica;
/**
 *
 * @author CrysMario
 */
public class Suma extends OperacionBasica {
    
    public Suma(double operador1, double operador2) {
        super(operador1, operador2);
    }
    
    public double getResultado() {
        return super.getOperando1() + super.getOperando2();
    }

    @Override
    public String toString() {
        return super.getOperando1() + " + " + super.getOperando2()
               + " = " + this.getResultado();
    }
}

package matematicabasica;
/**
 *
 * @author CrysMario
 */
public class Resta extends OperacionBasica {
    
    public Resta(double operador1, double operador2) {
        super(operador1, operador2);
    }
    
    public double getResultado() {
        return super.getOperando1() - super.getOperando2();
    }
    
    @Override
    public String toString() {
        return super.getOperando1() + " - " + super.getOperando2()
               + " = " + this.getResultado();
    }
}

package matematicabasica;
/**
 *
 * @author CrysMario
 */
public class Producto extends OperacionBasica {
    
    public Producto(double operador1, double operador2) {
        super(operador1, operador2);
    }
    
    public double getResultado() {
        return super.getOperando1() * super.getOperando2();
    }
    
    @Override
    public String toString() {
        return super.getOperando1() + " * " + super.getOperando2()
               + " = " + this.getResultado();
    }
}

package matematicabasica;
/**
 *
 * @author CrysMario
 */
public class Division extends OperacionBasica {
    
    public Division(double operador1, double operador2) {
        super(operador1, operador2);
    }
    
    public double getResultado() {
        try {
            return super.getOperando1() / super.getOperando2();
        } catch (ArithmeticException e) {
            System.out.println("Infinito");
            return 0;
        }
    }

    @Override
    public String toString() {
        return super.getOperando1() + " / " + super.getOperando2()
               + " = " + this.getResultado();
    }
}

package matematicabasica;
/**
 *
 * @author CrysMario
 */
public class Modulo extends OperacionBasica {
    
    public Modulo(double operador1, double operador2) {
        super(operador1, operador2);
    }
    
    public double getResultado() {
        try {
            return super.getOperando1() % super.getOperando2();
        } catch (ArithmeticException e) {
            System.out.println("No existe");
            return 0;
        }
    }
    
    @Override
    public String toString() {
        return super.getOperando1() + " mod " + super.getOperando2()
               + " = " + this.getResultado();
    }
}

package matematicabasica;
/**
 *
 * @author CrysMario
 */
public class Potencia extends OperacionBasica {
    
    public Potencia(double operador1, double operador2) {
        super(operador1, operador2);
    }
    
    public double getResultado() {
        return Math.pow(super.getOperando1(), super.getOperando2());
    }
    
    @Override
    public String toString() {
        return super.getOperando1() + " ^ " + super.getOperando2()
               + " = " + this.getResultado();
    }
}

Una vez finalizado las clases hijas, procederemos con la clase por donde corre nuestro programa y tiene el método main y hacemos lo siguiente:

package matematicabasica;

/**
 *
 * @author CrysMario
 */
public class MatematicaBasica {

    public static void main(String[] args) {
        Suma s1 = new Suma(3, 4);
        System.out.println(s1.toString());
        Resta r1 = new Resta(3, 4);
        System.out.println(r1.toString());
        Producto p1 = new Producto(3, 4);
        System.out.println(p1.toString());
        Division d1 = new Division(3, 4);
        System.out.println(d1.toString());
        Division d2 = new Division(3, 0);
        System.out.println(d2.toString());
        Modulo m1 = new Modulo(3, 2);
        System.out.println(m1.toString());
        Modulo m2 = new Modulo(3, 0);
        System.out.println(m2.toString());
        Potencia pot1 = new Potencia(3, 4);
        System.out.println(pot1.toString());
        Potencia pot2 = new Potencia(3, -2);
        System.out.println(pot2.toString());
        System.out.println("*************************");
        System.out.println(new Resta(p1.getResultado(), s1.getResultado()).toString());
    }
}

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

run:
3.0 + 4.0 = 7.0
3.0 - 4.0 = -1.0
3.0 * 4.0 = 12.0
3.0 / 4.0 = 0.75
3.0 / 0.0 = Infinity
3.0 mod 2.0 = 1.0
3.0 mod 0.0 = NaN
3.0 ^ 4.0 = 81.0
3.0 ^ -2.0 = 0.1111111111111111
*************************
12.0 - 7.0 = 5.0
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.

4 comentarios:

  1. Buenas tardes brother una pregunta ese programa ya contiene el POO? Me podrias ayudar brother rendonsalvador54@gmail.com

    ResponderEliminar
  2. Buenas tardes brother una pregunta ese programa ya contiene el POO? Me podrias ayudar brother rendonsalvador54@gmail.com

    ResponderEliminar