29
UNIVERSIDAD NACIONAL DE CAJAMARCA FACULTAD DE INGENIERÍA Algoritmos y Estructura de Datos II

Arreglos y Objetos

Embed Size (px)

DESCRIPTION

arreglos y objetos en java

Citation preview

UNIVERSIDAD NACIONAL DE CAJAMARCA

FACULTAD DE INGENIERÍA

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

• Tamaño que ocupa en memoria

• Ventajas y desventajas

Solucionando el problema

• ¿qué pasaría si ahora tengo que registrar el nombre, edad y talla de cada uno de mis compañeros para finalmente mostrarlos en una tabla. ¿Cómo lo resolvería?

Logro Esperado

Al término de la sesión, el estudiante resuelve un problema real planteado por el profesor, usando arreglos, sustentando su solución con un diseño de la solución 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;

Point: (0, 0)

p

p[0] p[1]

Point: (1, 1) Point: (2, 2)

p[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;

Point: (1, 0)

p

p[0] p[1]

Point: (1, 1) Point: (2, 2)

p[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;

Point: (1, 0)

p

p[0] p[1]

Point: (1, 2) Point: (2, 2)

p[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;

Point: (1, 0)

p

p[0] p[1]

Point: (1, 2) Point: (2, 2)

p[2]

vertice

Point: (4, 4)

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;

Point: (1, 0)

p

p[0] p[1]

Point: (2, 2)

p[2]

vertice

Point: (4, 4)

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;

Point: (1, 0)

p

p[0] p[1] p[2]

vertice

Point: (4, 4)

Inicialización explícita

• Sintaxis

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

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

Cada expi es una expresión que evalua el tipo TipoElemento

Inicialización explícita

• 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 métodos miembros de Object.

• El método clone() de arrays se ha reescrito específicamente para arrays.

• Método length

– Tamaño del array for (int i = 0; i < mascota.length; ++i) {

System.out.println(mascota[i]);

}

Miembros del array

• Método 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

• Método 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);

Point: (0, 0)

v

v[0] v[1]

Point: (1, 1)

u

u[0] u[1]

Haciendo una copia profunda

• Método 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);

Point: (0, 0)

v

v[0] v[1]

Point: (1, 1)

u

u[0] u[1]

Point: (4, 30)

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

Point: (0, 0)

w

w[0] w[1]

Point: (2, 1) Point: (2, 2)

w[2]

u

u[0] u[1] u[2]

Point: (0, 0) Point: (2, 1) Point: (2, 2)

Solución al problema

PREGUNTAS

Revisando los conceptos estudiados

Recordando los tipos de datos primitivos

Ordenar el código para producir la salida mostrada

Preguntas

• ¿Cómo defino una arreglo de objetos de manera general?

• ¿Cómo accedemos a las propiedades de cada objeto dentro del arreglo?

• ¿Para qué me sirve el método clone?

• ¿Cómo puedo sacar una copia de un arreglo? Explique sus alternativas.

• ¿cómo 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