Sei sulla pagina 1di 7

Unidad 5.

Arreglos (Arrays)
Programacin 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 direccin en memoria y no necesariamente est
guardando todos los objetos. [1]
Los elementos en un arreglo pueden ser primitivos (int, float, char) o tambin 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 posicin del objeto al que hacemos referencia. Este ndice comienza en cero (para el
primer valor del arreglo) y termina en el nmero de elementos en el arreglo menos uno(n - 1).
Antes de entrar a cdigo, supongamos que queremos guardar las calificaciones obtenidas en un examen en
un grupo de programacin, no nos interesa por el momento ms informacin 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 acomodaran 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 ms grandes o pequeos segn se
requiera.
Otro diagrama tomado del libro de texto donde vemos un arreglo de valores int es el siguiente:

Documento elaborado por el Ing. Arturo Nereu Nez.

Unidad 5. Arreglos (Arrays)


Programacin orientada a objetos

No te preocupes si ves el diagrama horizontal o vertical, a nivel de programacin esto es irrelevante; sin
embargo, opta por la representacin que ms te acomode al momento de hacer tu diseo de software.
Tambin toma en cuenta que los ndices siempre deben ser un entero positivo y dentro del rango del tamao
del arreglo (0...n-1).
Ahora es tiempo de ver cmo crear arreglos en Java. Crea un nuevo proyecto en BlueJ y una clase
PruebaArreglos.java en la que escribiremos el siguiente cdigo:

En el ejemplo vemos la sintaxis para declarar el arreglo:


tipo_dato[] nombre_arreglo = new tipo_dato[tamao];
Donde tipo de dato puede ser una clase definida por nosotros, adems, es muy importante notar que en la
inicializacin del objeto arreglo se debe indicar el tamao del arreglo, mismo que no puede cambiar.

Unidad 5. Arreglos (Arrays)


Programacin orientada a objetos

Posteriormente notamos que los elementos del arreglo se inicializan en su valor por defecto, en el caso de
objetos los espacios sern asignados con el valor null.
Despus vemos cmo 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 quedara as:

Al ver la clase ya sabemos que un objeto alumno tendr dos atributos pblicos y adems un constructor para
asignarle valores a sus atributos.
Nota: en este ejemplo vemos, sin embargo, que los nombres de las variables que se envan de parmetros al
constructor son idnticos a los de los atributos de la clase. Por lo anterior, Java no podra diferenciar entre uno
y otro y marcara un error de compilacin.
Para evitar esto, usamos la palabra reservada this(este) y el operador punto, que recordemos nos ayuda a
referenciar un mtodo 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
parmetros.

Ahora, vamos a crear una clase llamada SalonDeClases.java, que quede de la siguiente manera:

Unidad 5. Arreglos (Arrays)


Programacin orientada a objetos

En la clase creamos un arreglo que guarda valores del tipo alumno y le damos un tamao de 5, al final
imprimimos el tamao (usando el operador length de un arreglo), nos da como resultado un cinco, ya que de
ese tamao definimos nuestro arreglo.
Es momento de llenar el arreglo, para pruebas vamos a ir agregndolos:

Al momento de asignar cada espacio en el arreglo, creamos un nuevo objeto que ser referenciado en su
posicin designada en el mismo.
Ya con nuestro arreglo debidamente llenado, vamos a modificar la clase alumno para agregar un mtodo que
nos permita que cada alumno imprima en consola su nombre y nmero de lista, la clase ahora queda:

Unidad 5. Arreglos (Arrays)


Programacin 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 automticamente 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 tamao, por lo que si se declara un
arreglo con un tamao de 5 elementos, solamente podr guardar mximo cinco elementos.
Imagina el caso del saln de clases, ahora hay cinco alumnos pero puede que lleguen ms y nuestro
programa sera incapaz de agregar nuevos alumnos (y por lo tanto sera un tanto intil).

Unidad 5. Arreglos (Arrays)


Programacin orientada a objetos

Una opcin que tenemos es usar otra estructura de datos, tal vez un ArrayList, una Fila, una Cola, un
Diccionario, o cualquier otra.
Tambin tenemos la opcin de crear un nuevo arreglo con el nuevo tamao deseado, copiar los elementos de
nuestro arreglo original y despus insertar los nuevos elementos:

En este caso crecimos el tamao del arreglo; sin embargo, tambin es posible reducirlo siguiendo la misma
tcnica.

Arrays multidimensionales
Los arreglos que vimos en esta unidad han sido en una sola dimensin, es decir, que se tiene acceso
solamente mediante un ndice.
En Java, podemos declarar arreglos de ms de una dimensin utilizando una variante en la declaracin:
int[][] matriz = new int[4][4];
Esa declaracin nos da un arreglo bidimensional o matriz.

Unidad 5. Arreglos (Arrays)


Programacin orientada a objetos

Para acceder a los elementos de la matriz, necesitamos dos ndices:


matriz[2][2] = 10;
Observa el siguiente video para ver ms detalles sobre matrices en JAVA:
http://youtu.be/SMIyVS3k848

Referencias.
[1] Cmo programar en JAVA: Libro de texto del curso
Estructuras de datos con JAVA http://www.utim.edu.mx/~svalero/docs/ED_Java.pdf
Administracin de memoria en JAVA: http://www.slideshare.net/luisdebello/administracin-de-memoria-en-java

Potrebbero piacerti anche