domingo, 1 de septiembre de 2013

Argumentos Variables - VarArgs - Elipsis [Java]

Saludos, después de mi ausencia en el blog regreso con una interesante publicación, acerca del tema: Argumentos variables.

VarArgs como le dicen en E.U. es una herramienta que nos proporciona Java para lo siguiente:

Imagina que tienes un método en el que necesitas pasar n número de argumentos, conforme a las necesitas podrías pasar 2 argumentos, 3 argumentos, 4 argumentos, etc. Es verdad que existe la sobrecarga de métodos, pero esto implica una gran repetición de código que de un momento a otro puede generar una clase ilegible.

Por lo tanto, el objetivo de utilizar un método con argumentos variables es que tú puedes colocar el número de argumentos que quieras, siempre y cuando sea del tipo correspondiente, a continuación la sintaxis básica de un método con argumentos variables:

public int sumar(int... n)
{
     int suma=0;
     for(int i:n)
          suma+=i;
     return suma;
}

Como podrás observar el argumento del método anterior "int... n" tiene tres puntos después de declarar el tipo de dato, esto significa que el método suma puede soportar n cantidad de argumentos de tipo int, dentro del método puedes tratar a ese argumento variable como si fuera un arreglo, es por ello que por medio de un bucle for obtengo todos los argumentos y realizo la suma.

Lo anterior, es un ejemplo muy simple, también es posible agregar un argumento "fijo", "normal" como los que siempre utilizamos, pero ellos deben ir antes del argumento variable.

A continuación comparto un pequeño proyecto de una "tiendita" que nos ayudará a comprender mejor el funcionamiento de los argumentos variables.

Producto.java


La clase Producto es una clase destinada para crear objetos que tengan 3 atributos: una clave, una descripción y un precio.

Compra.java


La clase Compra representa la elección del usuario de cual Producto desea comprar, la cantidad a llevar y cuanto pagara por ellos. Hablemos de que puede hacer la elección de varios productos pero del mismo tipo.

Carrito.java


La clase Carrito es la encargada de almacenar n número de Compras, la magia se encuentra en el constructor de la clase que tiene "2 argumentos": un número de ticket y n número de compras, es decir, cuando creas una instancia de la clase Carrito debes asignar en su constructor el número del ticket y después el numero de compras que tu quieras, observa que yo asigno al arreglo compras el valor de todos los argumentos que se le pasen como objetos Compra posteriormente desde el método vender realizo un proceso muy similar al que mostré en nuestro primer ejemplo de sumar.

Tickets.java


En la clase Tickets ponemos a todas las clases a trabajar:

1.- Creamos algunos productos para que nuestros clientes elijan [Instanciando a la clase Producto].

2.- Realizamos varias compras (pensando que serán 2 los clientes) [Instanciando a la clase Compra].

3.- Realizamos 2 carritos, en el primero pasamos el número de ticket y 2 compras, en el segundo el número de ticket y 3 compras [Aquí el efecto de los argumentos variables] esto sin ninguna necesidad de sobrecargar los métodos.

4.- Se muestra la información de nuestros carritos así como el total a pagar, aquí una captura del resultado por el Sr. Frijolito [NetBeans]:

Si te interesa el proyecto completo lo puedes obtener dando clic en Descargar.


Nota: Desconozco si uno de los nombres que también se le dan a los Argumentos variables es Elipsis, creo que sip n_n, hasta la próxima.


    Choose :
  • OR
  • To comment
1 comentario:
Write comentarios