Vectores de objetos

Anuncio
Programación Avanzada para Sistemas
de Telecomunicación
Arrays
Juan Carlos Cruellas
cruellas@ac.upc.es
Departamento
Arquitectura
Computadores
© J.C. Cruellas
Grupo de Aplicaciones Telemáticas
U PC
Objetos y clases
• Introducción.
• Vectores de datos primitivos.
• Vectores de objetos.
Departamento
Arquitectura
Computadores
U PC
© J.C. Cruellas
Grupo de Aplicaciones Telemáticas
Introducción
• En Java los arrays son tipos predefinidos por el propio lenguaje
que contienen como datos:
– La secuencia de valores de tipo primitivo o de referencias a objetos
– Un dato protegido que informa de la cantidad de elementos que
puede contener el array (length).
• La declaración de una variable como un array simplemente
crea una referencia que apunta a null.
• Para crear un array propiamente dicho HAY QUE HACER USO
DEL OPERADOR new.
• Cuando se pasa un array como argumento de una función, se
pasa su dirección.
Departamento
Arquitectura
Computadores
© J.C. Cruellas
Grupo de Aplicaciones Telemáticas
U PC
Introducción: las clases Array
• Cuando se usa el operador new para crear un array
de, digamos 5 posiciones:
– Si el vector es de datos int u otro tipo primitivo, se reserva
espacio para guardar cinco valores de ese tipo primitivo.
– Si el vector es un vector de objetos, se reserva espacio para
guardar cinco REFERENCIAS (punteros) a objetos de la
clase en cuestión. Es tarea del propio programa crear los
cinco objetos (con nuevas invocaciones al operador new y el
correspondiente constructor) y asignar las referencias a las
posiciones del vector.
Departamento
Arquitectura
Computadores
U PC
© J.C. Cruellas
Grupo de Aplicaciones Telemáticas
Vectores de datos primitivos
• Declaración vector de datos int.
protected int [] vectInt ;
vectInt
• Creación del vector e inicialización por defecto.
vectInt = new int[4] ;
vectInt
• Creación e inicialización simultáneas.
0
0
0
0
protected int [] vectInt = {1,2,3,4} ;
Departamento
Arquitectura
Computadores
© J.C. Cruellas
Grupo de Aplicaciones Telemáticas
U PC
Vectores de datos primitivos
• Todo array posee un dato length que indica el número
de elementos que puede llegar a contener un array
(dimensión). Es un dato público que, sin embargo NO
puede ser modificado.
• Puede escribirse vectInt.length allí donde pueda
accederse a vectInt.
• Cuando se intenta acceder a una posición inexistente
de un array, la máquina virtual de Java genera y
arroja una excepción OutOfBoundsException.
Departamento
Arquitectura
Computadores
U PC
© J.C. Cruellas
Grupo de Aplicaciones Telemáticas
Vectores de objetos
• Declaración vector de objetos
protected Casilla [] tablero ;
tablero
• Creación del vector e inicialización por defecto.
tablero = new Casilla[4] ;
Departamento
Arquitectura
Computadores
tablero
Grupo de Aplicaciones Telemáticas
© J.C. Cruellas
U PC
Vectores de objetos
• Creación de objetos y asignación a posiciones de array
tablero[0]
tablero[1]
tablero[2]
tablero[3]
=
=
=
=
new
new
new
new
Casilla();
Casilla();
Casilla();
Casilla();
casilla
tablero
casilla
casilla
casilla
Departamento
Arquitectura
Computadores
U PC
© J.C. Cruellas
Grupo de Aplicaciones Telemáticas
Vectores de objetos
• Declaración vector bidimensional de objetos
protected Casilla [][] tablero ;
tablero
• Creación directa de matriz a referencias a objetos.
tablero = new Casilla[4][4] ;
tablero
Departamento
Arquitectura
Computadores
© J.C. Cruellas
Grupo de Aplicaciones Telemáticas
U PC
Vectores de objetos
• Creación de objetos y asignación a posiciones de matriz
tablero[0][0] = new Casilla();
casilla
tablero
Departamento
Arquitectura
Computadores
U PC
© J.C. Cruellas
Grupo de Aplicaciones Telemáticas
Vectores de objetos
• Creación por pasos de matriz a referencias de
objetos.
– Paso 1: crear referencias a filas
int nfilas ;
nfilas = 4 ;
tablero = new Casilla[nfilas][] ;
tablero
Departamento
Arquitectura
Computadores
© J.C. Cruellas
Grupo de Aplicaciones Telemáticas
U PC
Vectores de objetos
– Paso 2: para cada fila crear referencias de las columnas
ncol = 4 ;
for(int i=0;i<4;j++){
tablero[i] = new Casilla[ncol] ;
}
tablero
Departamento
Arquitectura
Computadores
U PC
© J.C. Cruellas
Grupo de Aplicaciones Telemáticas
Vectores de objetos
• Creación de objetos y asignación a posiciones de matriz
tablero[0][0] = new Casilla();
casilla
tablero
Departamento
Arquitectura
Computadores
U PC
© J.C. Cruellas
Grupo de Aplicaciones Telemáticas
Descargar