Subido por Jeremy Rocha

Arreglos (Arrays)

Anuncio
Unidad 5. Arreglos (Arrays)
Programación orientada a objetos
5. Arreglos (Arrays) 1
Un arreglo es un grupo de variables u objetos (que deben ser del mismo tipo).
Los arreglos en JAVA son considerados objetos, por lo que realmente cuando decimos que una variable es un
arreglo, nos referimos a que esa variable apunta a una dirección en memoria y no necesariamente está
guardando todos los objetos. [1]
Los elementos en un arreglo pueden ser primitivos (int, float, char) o también pueden ser compuestos, es decir
que podemos crear un arreglo que guarde objetos cuyas clases hayamos definido como Animal, Alumno, etc.
Para hacer referencia a un objeto se necesitan dos cosas: una, es el nombre de la variable del arreglo y otra
es un índice indicando la posición del objeto al que hacemos referencia. Este índice comienza en cero (para el
primer valor del arreglo) y termina en el número de elementos en el arreglo menos uno(n - 1).
Antes de entrar a código, supongamos que queremos guardar las calificaciones obtenidas en un examen en
un grupo de programación, no nos interesa por el momento más información salvo las notas. Tenemos algo
como (en escala del 1 al 10):
Calificaciones: 10, 9, 7, 8, 7, 10, 10, 9.
En un arreglo (lineal), las calificaciones se acomodarían de la siguiente manera:
[10 | 9 | 7 | 8 | 7 | 10 | 10
| 9]
Sabemos que tenemos un arreglo con ocho elementos y que en el índice [0] del arreglo está el valor 10, en el
índice [3] el valor 8 y en el índice [7] el valor 9.
Este ejemplo es solamente un caso, los arreglos pueden ser declarados más grandes o pequeños según se
requiera.
Otro diagrama tomado del libro de texto donde vemos un arreglo de valores int es el siguiente:
1
Documento elaborado por el Ing. Arturo Nereu Núñez.
1
Unidad 5. Arreglos (Arrays)
Programación orientada a objetos
No te preocupes si ves el diagrama horizontal o vertical, a nivel de programación esto es irrelevante; sin
embargo, opta por la representación que más te acomode al momento de hacer tu diseño de software.
También toma en cuenta que los índices siempre deben ser un entero positivo y dentro del rango del tamaño
del arreglo (0...n-1).
Ahora es tiempo de ver cómo crear arreglos en Java. Crea un nuevo proyecto en BlueJ y una clase
PruebaArreglos.java en la que escribiremos el siguiente código:
En el ejemplo vemos la sintaxis para declarar el arreglo:
tipo_dato[] nombre_arreglo = new tipo_dato[tamaño];
Donde tipo de dato puede ser una clase definida por nosotros, además, es muy importante notar que en la
inicialización del objeto arreglo se debe indicar el tamaño del arreglo, mismo que no puede cambiar.
2
Unidad 5. Arreglos (Arrays)
Programación orientada a objetos
Posteriormente notamos que los elementos del arreglo se inicializan en su valor por defecto, en el caso de
objetos los espacios serán asignados con el valor null.
Después vemos cómo se asignan los valores accediendo a los elementos del arreglo utilizando los índices,
tanto para asignar como para leer.
Arrays y Objetos
Ahora veremos un ejemplo donde el arreglo que creemos no guarde datos primitivos sino compuestos; es
decir, objetos instanciados de clases que definimos.
Siguiendo con el ejemplo de las calificaciones, vamos a declarar una clase Alumno, la cual tendrá como
atributos una variable int numeroDeLista y una String nombre, la cual quedaría así:
Al ver la clase ya sabemos que un objeto alumno tendrá dos atributos públicos y además un constructor para
asignarle valores a sus atributos.
Nota: en este ejemplo vemos, sin embargo, que los nombres de las variables que se envían de parámetros al
constructor son idénticos a los de los atributos de la clase. Por lo anterior, Java no podría diferenciar entre uno
y otro y marcaría un error de compilación.
Para evitar esto, usamos la palabra reservada this(este) y el operador punto, que recordemos nos ayuda a
referenciar un método o atributo de un objeto.
Así, sabemos que si escribimos this.nombre nos referimos a la variable de la clase y no al de los
parámetros.
Ahora, vamos a crear una clase llamada SalonDeClases.java, que quede de la siguiente manera:
3
Unidad 5. Arreglos (Arrays)
Programación orientada a objetos
En la clase creamos un arreglo que guarda valores del tipo alumno y le damos un tamaño de 5, al final
imprimimos el tamaño (usando el operador length de un arreglo), nos da como resultado un cinco, ya que de
ese tamaño definimos nuestro arreglo.
Es momento de llenar el arreglo, para pruebas vamos a ir agregándolos:
Al momento de asignar cada espacio en el arreglo, creamos un nuevo objeto que será referenciado en su
posición designada en el mismo.
Ya con nuestro arreglo debidamente llenado, vamos a modificar la clase alumno para agregar un método que
nos permita que cada alumno imprima en consola su nombre y número de lista, la clase ahora queda:
4
Unidad 5. Arreglos (Arrays)
Programación orientada a objetos
Y desde la otra clase podemos pedirle a cada objeto en el arreglo que imprima su nombre:
En lugar de manualmente indicar el índice de los objetos en el arreglo para imprimir su nombre, utilizamos un
ciclo for para que lo haga automáticamente empezando en el índice 0 (i = 0) y terminando en el índice
4(alumnos.length - 1).
Redimensionando el Array
Ahora sabemos que un arreglo en Java no puede crecer o decrecer su tamaño, por lo que si se declara un
arreglo con un tamaño de 5 elementos, solamente podrá guardar máximo cinco elementos.
Imagina el caso del salón de clases, ahora hay cinco alumnos pero puede que lleguen más y nuestro
programa sería incapaz de agregar nuevos alumnos (y por lo tanto sería un tanto inútil).
5
Unidad 5. Arreglos (Arrays)
Programación orientada a objetos
Una opción que tenemos es usar otra estructura de datos, tal vez un ArrayList, una Fila, una Cola, un
Diccionario, o cualquier otra.
También tenemos la opción de crear un nuevo arreglo con el nuevo tamaño deseado, copiar los elementos de
nuestro arreglo original y después insertar los nuevos elementos:
En este caso crecimos el tamaño del arreglo; sin embargo, también es posible reducirlo siguiendo la misma
técnica.
Arrays multidimensionales
Los arreglos que vimos en esta unidad han sido en una sola dimensión, es decir, que se tiene acceso
solamente mediante un índice.
En Java, podemos declarar arreglos de más de una dimensión utilizando una variante en la declaración:
int[][] matriz = new int[4][4];
Esa declaración nos da un arreglo bidimensional o matriz.
6
Unidad 5. Arreglos (Arrays)
Programación orientada a objetos
Para acceder a los elementos de la matriz, necesitamos dos índices:
matriz[2][2] = 10;
Observa el siguiente video para ver más detalles sobre matrices en JAVA:
http://youtu.be/SMIyVS3k848
Referencias.
[1] Cómo programar en JAVA: Libro de texto del curso
Estructuras de datos con JAVA http://www.utim.edu.mx/~svalero/docs/ED_Java.pdf
Administración de memoria en JAVA: http://www.slideshare.net/luisdebello/administracin-de-memoria-en-java
7
Descargar