Calculadora en Java con herencia de clases

Por user Carlos Eduardo Plasencia Prado
Calculadora en Java con herencia de clases

En este tutorial aprenderemos a usar la propiedad de la herencia de clases de Java mediante el pequeño ejemplo de una calculadora.

¿Qué es la herencia de clases?

La herencia de clases es la posibilidad de una clase de poder usar los atributos y métodos que ya existen en otra clase distinta, en la Programación Orientada a Objetos (POO) se hace heredando de la clase que contengan los elementos necesarios para tal fin.

La herencia está fuertemente ligada a la reutilización del código en la POO. Esto es, el código de cualquiera de las clases puede ser utilizado sin más que crear una clase derivada de ella, o bien una subclase.

Para poder entender mejor estos conceptos veremos un ejemplo sencillo como lo es el desarrollo de una calculadora con las 4 operaciones básicas (suma, resta, multiplicación y división). Para empezar vamos a definir nuestras clases a usar.

Como podemos observar todas las clases tienen tanto atributos como métodos iguales, esto es perfecto para usar herencia, definimos una nueva clase que contenga todos los atributos y métodos de nuestras 4 clases, a esta nueva clase la llamaremos operación y tendríamos ahora el siguiente esquema:

Como podemos observar ahora tenemos la clase Operacion la cual es una superClase porque contiene atributos y métodos que serán heredados por otras clases, y las clases Suma, Resta, Multiplicacion y division que son las subClases porque heredan atributos y métodos de la superClase Operacion.

Ahora que ya entendimos lo que es herencia vamos a implementarla, para este tutorial vamos a trabajar con el lenguaje de programación Java y el entorno de desarrollo NetBeans.

Primero implementaremos la superClase Operacion que es la que contiene los atributos y métodos a heredar.

public class Operacion {
    
    double n1;
    double n2;
    double res;
    char operacion;

    
    public Operacion(double n1, double n2, char operacion) {
        
        this.n1 = n1;
        this.n2 = n2;
        this.operacion = operacion;
    }
    
        
    public void mostrarResultado(){
        
        System.out.println(this.n1+" "+this.operacion+" "+this.n2+" = "+this.res);
        
    }
}

La herencia en Java (y en otros lenguajes de programación) se declara con la palabra reservada extends seguida de la clase de la cual deseamos heredar.

Para la clase Suma quedaría así:

public class Suma extends Operacion{
    
    double suma;
       
    public Suma(double n1, double n2) {
             
        super(n1, n2, '+');
        this.suma = n1 + n2;
        this.setRes(this.suma);
    }
}

Resta:

public class Resta extends Operacion{
    
    double resta;
       
    public Resta(double n1, double n2) {
             
        super(n1, n2, '-');
        this.resta = n1 - n2;
        this.setRes(this.resta);
    }
}

Multiplicación:

public class Multiplicacion extends Operacion{
    
    double multi;
       
    public Multiplicacion(double n1, double n2) {
             
        super(n1, n2, '*');
        this.multi = n1 * n2;
        this.setRes(this.multi);
    }
}

y por último División:

public class Division extends Operacion{
    
    double div = 0;
       
    public Division(double n1, double n2) {
             
        super(n1, n2, '/');
        if(n2==0) System.out.println("No se puede dividir entre cero");
        else this.div = n1 / n2;
        this.setRes(this.div);
    }    
}

Como podemos apreciar en las cuatro clases utilizamos la palabra reservada extends y seguida la clase de la cual se está heredando en nuestro caso Operacion, esto permite tener acceso a los métodos y atributos de esta clase, además hacemos uso del método super que hace una instancia de la superClase Operacion enviando como parámetros los números con los cuales se realizará la operación  y el símbolo de esta, luego ejecutamos la operación y enviamos el resultado a la superClase.

En nuestro programa principal instanciamos a cada una de las clases para realizar las operaciones y hacemos uso del método de la superClase Operacion para mostrar los resultados.

double n1 = 10;
double n2 = 5;
        
//suma
Suma sum = new Suma(n1,n2);
sum.mostrarResultado();
        
//resta
Resta res = new Resta(n1,n2);
res.mostrarResultado();
        
//multiplicacion
Multiplicacion mul = new Multiplicacion(n1,n2);
mul.mostrarResultado();
        
//division
Division div = new Division(n1,n2);
div.mostrarResultado();

Como resultado obtenemos el resultado de las operaciones y las podemos observar en la consola de salida de NetBeans, así que la herencia funciona correctamente.

Puedes encontrar el código de este ejemplo en mi repositorio de GitHub.

También puedes aprender esto y mucho más en el curso de fundamentos de Java que DevCode ofrece para ti: https://devcode.la/cursos/fundamentos-java/

Espero que les haya gustado este tutorial y les pueda servir para que desarrollen sus propios proyectos utilizando la herencia del paradigma orientado a objetos, no se olviden que si tienen dudas y consultas pueden dejarlas en los comentarios. ¡Hasta la próxima!

user

Carlos Eduardo Plasencia Prado

Backend Developer | Python / Django junior - Javascript / Node.js