Sunteți pe pagina 1din 29

UNIVERSIDAD NACIONAL DE CAJAMARCA

FACULTAD DE INGENIERA

Algoritmos y Estructura
de Datos II

AAREGLOS Y OBJETOS

Qu recuerdo de un arreglo?

qu mas puedo hacer con un arreglo?


Hasta ahora hemos
creado arreglos
sencillos con tipos de
datos primitivos.
Qu otro tipo de
elementos permite
guardar java?

Recordando los vectores


Referente a los vectores
que podemos decir de:
Tipo de dato (primitivo
o referencia)
Tipos de datos que
puedo almacenar
Tamao que ocupa en
memoria
Ventajas y desventajas

Solucionando el problema
qu pasara si ahora
tengo que registrar el
nombre, edad y talla de
cada uno de mis
compaeros para
finalmente mostrarlos
en una tabla. Cmo lo
resolvera?

Logro Esperado
Al trmino de la sesin, el
estudiante resuelve un
problema real planteado
por el profesor, usando
arreglos, sustentando su
solucin con un diseo de
la solucin propuesta.

ARREGLOS Y OBJETOS

Trabajando juntos

Considere
Point[] p = new Point[3];
p[0] = new Point(0, 0);
p[1] = new Point(1, 1);
p[2] = new Point(2, 2);
p[0].setX(1);
p[1].setY(p[2].getY());
Point vertice= new Point(4,4);
p[1] = p[0];
p[2] = vertice;

http://docs.oracle.com/javase/7/docs/api/

Considere
Point[] p = new Point[3];
p[0] = new Point(0, 0);
p[1] = new Point(1, 1);
p[2] = new Point(2, 2);
p[0].setX(1);
p[1].setY(p[2].getY());
Point vertice = new Point(4,4);
p[1] = p[0];
p[2] = vertice;
p[0]

p[1]

p[2]

Point: (0, 0)

Point: (1, 1)

Point: (2, 2)

Considere
Point[] p = new Point[3];
p[0] = new Point(0, 0);
p[1] = new Point(1, 1);
p[2] = new Point(2, 2);
p[0].setX(1);
p[1].setY(p[2].getY());
Point vertice = new Point(4,4);
p[1] = p[0];
p[2] = vertice;
p[0]

p[1]

p[2]

Point: (1, 0)

Point: (1, 1)

Point: (2, 2)

Considere
Point[] p = new Point[3];
p[0] = new Point(0, 0);
p[1] = new Point(1, 1);
p[2] = new Point(2, 2);
p[0].setX(1);
p[1].setY(p[2].getY());
Point vertice = new Point(4,4);
p[1] = p[0];
p[2] = vertice;
p[0]

p[1]

p[2]

Point: (1, 0)

Point: (1, 2)

Point: (2, 2)

Considere
Point[] p = new Point[3];
p[0] = new Point(0, 0);
p[1] = new Point(1, 1);
p[2] = new Point(2, 2);
p[0].setX(1);
p[1].setY(p[2].getY());
Point vertice = new Point(4,4);
p[1] = p[0];
p[2] = vertice;
vertice
p[0]

p[1]

p[2]

Point: (4, 4)

Point: (1, 0)

Point: (1, 2)

Point: (2, 2)

Considere
Point[] p = new Point[3];
p[0] = new Point(0, 0);
p[1] = new Point(1, 1);
p[2] = new Point(2, 2);
p[0].setX(1);
p[1].setY(p[2].getY());
Point vertice = new Point(4,4);
p[1] = p[0];
p[2] = vertice;
vertice
p[0]

p[1]

p[2]

Point: (4, 4)

Point: (1, 0)

Point: (2, 2)

Considere
Point[] p = new Point[3];
p[0] = new Point(0, 0);
p[1] = new Point(1, 1);
p[2] = new Point(2, 2);
p[0].setX(1);
p[1].setY(p[2].getY());
Point vertice = new Point(4,4);
p[1] = p[0];
p[2] = vertice;
vertice
p[0]

p[1]

p[2]

Point: (4, 4)

Point: (1, 0)

Inicializacin explcita
Sintaxis
id Hace referencia a un array de n elementos. id[0]
tiene el valor exp0 , id[1] Tiene el valor exp1 , y ...

TipoElemeto[ ] id = { exp0 , exp1 , ... expn-1 };

Cada expi es una expresin que evalua


el tipo TipoElemento

Inicializacin explcita
Ejemplo
String[] mascota = { canela, milusa,
jack", estrella" };
int[] uno = { 1 };

Equivale a
String[] mascota = new String[4];
mascota[0] = canela"; mascota[1] = milusa";
mascota[2] = jack";
mascota[3] = estrella";
int[] uno = new int[1];
uno[0] = 1;

Miembros del array

Como array es un objeto, tiene todos los


mtodos miembros de Object.
El mtodo clone() de arrays se ha reescrito
especficamente para arrays.
Mtodo length
Tamao del array
for (int i = 0; i < mascota.length; ++i) {
System.out.println(mascota[i]);
}

Miembros del array

Mtodo clone()
Produce una copia superficial
Point[] u = {new Point(0, 0), new
Point(1, 1)};
Point[] v = u.clone();
v[1] = new Point(4, 30);

Miembros del array


Mtodo clone()
Produce una copia superficial
Point[] u = {new Point(0, 0), new Point(1,
1)};
Point[] v = u.clone();
v[1] = new Point(4, 30);
u[0]

u[1]

Point: (0, 0)

v
v[0]

v[1]

Point: (1, 1)

Haciendo una copia profunda


Mtodo clone()
Produce una copia superficial
Point[] u = {new Point(0, 0), new Point(1,
1)};
Point[] v = u.clone();
v[1] = new Point(4, 30);
u[0]

u[1]

Point: (0, 0)

Point: (1, 1)

Point: (4, 30)


v[0]

v[1]

Haciendo una copia profunda

Ejemplo
Point[] w = new Point[u.length];
for (int i = 0; i < u.length; ++i) {
w[i] = u[i].clone();
}

Haciendo una copia profunda


u[0]

u[1]

u[2]

Point: (0, 0)
w[0]

w[1]

Point: (2, 1)

Point: (2, 2)

Point: (2, 1)

Point: (2, 2)

w[2]

Point: (0, 0)

Solucin al problema

PREGUNTAS

Revisando los conceptos estudiados

Recordando los tipos de datos primitivos

Ordenar el cdigo para producir la salida mostrada

Preguntas
Cmo defino una arreglo
de objetos de manera
general?
Cmo accedemos a las
propiedades de cada objeto
dentro del arreglo?
Para qu me sirve el
mtodo clone?
Cmo puedo sacar una
copia de un arreglo?
Explique sus alternativas.
cmo puedo saber si dos
arreglos son iguales?

Problema propuesto
Generar un vector de
puntos aleatorios que
pertenezcan al primer
cuadrante del eje de
coordenadas
cartesianas y encontrar
la distancia de cada
punto al centro (0,0)
determinando la mayor
distancia

S-ar putea să vă placă și