Como elaborar una clase de un proceso de suma para números enteros y double.
Problema a resolver: Se sabe que un proceso puede realizarse en una sola sentencia. Pero que pasa si el proceso es mas complejo de lo que parece, ejemplo de este caso es la suma de números.
¿Cómo elaborar esta clase para cumpla con los requerimientos para funcionar en cualquier caso?
Lo primero que tenemos que hacer es establecer que métodos podemos utilizar en un caso de suma.
Los casos son los siguientes:
- -Sumar 2 números enteros dados por el usuario.
- -Sumar 10 números enteros dados por el usuario.
- -Sumar 2 números decimales dados por el usuario.
- -Sumar 10 números decimales dados por el usuario.
Lo primero que pensaría una persona es resolver el caso dentro del mismo método del Main.
A continuación se muestra lo que no se debe hacer en la suma.
public static void main(String[] args) {
int numero1=5;
int numero2=7;
int resultado=numero1+numero2;
System.out.println("Resultado: "+resultado);
}
En el caso anterior solo resuelve el primer punto.
public static void main(String[] args) {
double numero1=5.4;
double numero2=7.3;
double resultado=numero1+numero2;
System.out.println("Resultado:
"+resultado);
}
En el caso anterior solo resuelve el tercer punto.
Entonces los puntos
dos y tres tampoco se resuelven igual o agregando un ciclo.
Lo que se tiene que
hacer es crear una clase en la cual se puede resolver cualquier caso.
Esto es para que el código
no se modifique y en caso de hacerlo solo se modifique en un lugar y no en
varios lugares.
La clase deberá quedar
así.
/*
* Autor: Hugo Muñoz García
* Version: 1.0
* Fecha: 08/05/2012
* Tema: Clase Suma
*/
public class Suma {
//Atributos para variables tipo int
private double[] dOperadores;
private double dResultado=0;
//Atributos para variables tipo double
private int[] iOperadores;
private int iResultado=0;
/*Constructor para variable int[]*/
public Suma (int[] numeros){
this.iOperadores=numeros;
}
/*Constructor para variable Double[]*/
public Suma (double[] numeros){
this.dOperadores=numeros;
}
/*Obtener el resultado en int*/
public int getResultadoInt(){
this.iResultado=getResultadoSumaInt();
return this.iResultado;
}
/*Obtener el resultado en Double*/
public double getResultadoDouble(){
this.dResultado=getResultadoSumaDouble();
return this.dResultado;
}
private int getResultadoSumaInt(){
for (int i=0;i<this.iOperadores.length;i++){
this.iResultado+=this.iOperadores[i];
}
return this.iResultado;
}
private double getResultadoSumaDouble(){
for (int i=0;i<this.dOperadores.length;i++){
this.dResultado+=this.dOperadores[i];
}
return this.dResultado;
}
/*Obtiene un numero de una posición de una matriz*/
public int getOperador(int[] operadores, int posicion){
return operadores[posicion];
}
}
En el método Main solo se hace lo siguiente en caso de ser enteros para
dar como resultado 14.
public static void main(String[] args) {
int[] numeros={2,3,4,5};//En vez de esto
capturamos cada numero en una matriz
//tipo int
Suma suma=new Suma(numeros);//Creamos
la clase y le asignamos la matriz
System.out.println("Resultado:
"+suma.getResultadoInt());
}
En el método Main solo
se hace lo siguiente en caso de ser decimales para dar como resultado 14.8.
public static void main(String[] args) {
double[] numeros={2.2,3.2,4.2,5.2};//En vez de
esto capturamos cada numero en una
//matriz tipo double
Suma suma=new Suma(numeros);//Creamos
la clase y le asignamos la matriz
System.out.println("Resultado:
"+suma.getResultadoDouble());
}
Si deseas descargar el
código es el siguiente. Descarga del servidor de preferencia.