Sumar dos números en java. Primeros pasos en la programación de la Calculadora.

Por descargarpseint / hace 2 meses / 0 Comentarios ».

Hoy vas a aprender a sumar dos números en java mientras programas la calculadora. Comenzarás intentando utilizar la clase Number combinado con el operador +. Verás los problemas que esto supone y descubrirás los métodos intValue() y valueOf() como soluciones optimas y profesionales para manejar la conversión entre tipos primitivos y clases envoltorio (wrappers). Al final llegarás a una solución apropiada para cualquier versión de JDK lo que dará valor a tu desarrollo y preparará a tu mente para el mundo real de la programación. ¿Estás interesado en aprender todo esto?,

El artículo anterior lo terminaste creando dos clases que nos iban a servir como ejemplos de implementación de la interfaz Calculadora. A continuación te recuerdo cual fue el código que eclipse creó de forma automática.

package com.programarenjava.tutoriales.calculadora.implementaciones; import com.programarenjava.tutoriales.calculadora.interfaces.Calculadora; public class CalculadoraDeIntegers implements Calculadora { @Override public Number sumar(Number operando1, Number operando2) { // TODO Auto-generated method stub return null; } } A partir de aquí vas a empezar a programar la operación sumar. En la versión de la calculadora de tipos primitivos vimos una primera aproximación, muy práctica y rápida de desarrollar, pero poco flexible y sobre todo sin la posibilidad de poder utilizar todo el potencial de los objetos en java.

A continuación te refresco el código de aquella implementación

public int sumar(int numeroUno, int numeroDos) {

 // TODO Auto-generated method stub
 return numeroUno + numeroDos;
 }

Utilizar el operador + resulta muy intuitivo, tanto para aquellos que vienen de otros lenguajes de programación como para quienes empiezan a programar con este tutorial.

Sin embargo, los tipos primitivos no son objetos y por ello no pueden aprovechar todas las características ofrecidas por un lenguaje que sigue el paradigma de orientación a objetos como es java.

Por esta razón, aparecen las clases envoltorio (wrapper) y la clase abstracta de la que todas estas clases extienden (Number).

Aprendiendo a programar la operación sumar utilizando el operador + y la clase Integer.

Para sumar dos números en java vas a comenzar por el caso mas sencillo, sumar dos enteros. Lo primero que vas a intentar es sumar dos objetos Number tal cuales programando la siguiente línea de código.

public Number sumar(Number operando1, Number operando2) 

{  

 return operando1 + operando2; 

}

Si aún no lo has hecho, prueba a programar esta operación e intenta compilar el código. Si estás utilizando eclipse, como recomiendo para poder sacar el máximo provecho del curso, habrás visto que ha aparecido un código en rojo sobre la operación +.

¿Qué nos está diciendo Eclipse?.

Sencillamente que el operador + no es capaz de sumar variables de tipo Number. Para resolver este problema, teniendo en cuenta que estás intentando sumar dos enteros, tendrás que buscar una forma de transformar un Number en un tipo primitivo int.

Llegados a este punto, es el momento de que te introduzca un buen hábito en este lenguaje, imprescindible diría yo si pretendes desenvolverte con soltura en este mundo. Te estoy hablando de los API (Interfaz de Programación de Aplicaciones), los cuales suelen ofrecer una descripción clara y precisa sobre todas las utilidades que ofrece cada una de las clases del lenguaje.

En nuestro caso nos interesa conocer el API que nos ofrece java para la clase Number. Si no sabes como acceder a el te dejo un enlace que es importante que visites antes de continuar con el ejercicio.

Uso de los métodos intValue() y valueof().

Si has leído detalladamente el API de la clase Number habrás visto que nos ofrece un conjunto de métodos que se encargan de transformar objetos de tipo Number a tipos primitivos tales como byte, short, double, float, int y long.

Pues lo primero que vas a hacer es utilizar el método que transforma de un Number a un int. Tras hacerlo te habrá quedado un código como el que te muestro a continuación

public Number sumar(Number operando1, Number operando2) { 

// TODO Auto-generated method stub 

return operando1.intValue()+operando2.intValue();  

}

Antes de que me cuentes si este código te compila o no quiero que compruebes que versión de JDK está utilizando eclipse en el proyecto. Si no tienes claro de que te estoy hablando puedes mirar el artículo donde explico como puedes configurar un proyecto en eclipse.

Además te contaré un pequeño atajo para poder verlo cuando ya estás trabajando en un proyecto. Sitúa el ratón sobre el proyecto (vista Package Explorer ) y pulsa el botón derecho. En el menú que te aparecerá tendrás acceso a las propiedades del proyecto (opción de menú properties o el atajo de teclado ALT-ENTER).

Una vez dentro de las propiedades del proyecto tienes que seleccionar la opción Java Compiler. Una vez dentro Eclipse te muestra cual es la versión del lenguaje que está satisfaciendo (JDK compliance).

Bien si tienes una versión de java 1.5 o superior entonces el código de arriba estará listo, sin embargo, si estás compilando con la versión 1.4 o anteriores entonces te aparecerá un mensaje de error. Te propongo que cambies la versión a 1.4, ¿qué está ocurriendo?

La explicación tiene mucho que ver con el concepto autoboxing y el uso del método valueof.

La solución que hemos visto hasta ahora es perfecta para proyectos donde se utilice una versión de maquina virtual moderna, sin embargo, no siempre es esto posible. Hay clientes con sistemas antiguos a quienes les cuesta mucho migrar de versión de JDK. Las razones pueden ser variadas, pero a ti lo que te interesa es comprender que siempre debes intentar ofrecer soluciones que funcionen en el mayor número de entornos posible.

Para ello te propongo que revises el API de la clase wrapper Integer y te fijes en el método valueof().

Habrás visto que este método es capaz de transformar un tipo primitivo int en un objeto wrapper Integer. Justo lo que necesitamos ya que como Integer extiende de Number también es un Number.

public Number sumar(Number operando1, Number operando2) {

return Integer.valueOf(operando1.intValue()+operando2.intValue());

}

Otra cosa muy interesante de este método es que es estático. Por ahora te diré que los métodos estáticos se asocian a la clase (en este caso Integery no a los objetos creados de dicha clase. Gracias a ello podemos hacer uso de valueof sin tener que instanciar objetos Integer, lo que supondría un gasto extra de memoria. Suele ser una buena práctica declarar los métodos como estáticos cuando encapsulan alguna lógica común a todos los objetos de una clase y que no modifican el estado de cada una de las instancias de la misma.

Hasta aquí el artículo de hoy. Espero que te haya quedado claro como puedes sumar dos números en java. Has visto y programado el caso de números enteros, sin embargo, para la calculadora de reales (CalculadoraDeFloats) sería muy parecido. Por ello, me parece muy interesante que intentes hacerlo sin mi ayuda y comiences a notar como eres capaz de programar en java por ti mismo o misma.

En el siguiente capítulo voy a enseñarte una de las mejores prácticas que debería tener un profesional de este lenguaje de programación: las pruebas unitarias y el uso de la librería JUnit. Como siempre si tienes alguna duda o sugerencia puedes dejar tu comentario aquí o ponerte en contacto conmigo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *