En este nuevo Programando en Java vamos a ver lo que se llaman vectores de clases.
En principio volvemos al Programando en Java 3 donde comencé a enseñar lo que eran los vectores, pues se acordarán que un vector de un determinado tipo se declaraba igual que un objeto:
<?
int[] v_num = new int[3];
>
Como verán, creé este vector de 3 espacios para guardar tres números enteros.
<?
v_num[0] = 34; //Recuerden que los vectores comienzan desde 0, por lo tanto el contador de posiciones de este vector de tres espacios es de 0, 1, 2...
v_num[1] = 2;
v_num[2] = 15;
for(int i: v_num){
System.out.println(i);
}
>
Pues esto mismo lo podrán hacer con las clases. A modo de ejemplo seguiré usando la clase Persona que cree en el Programando en Java 3.
<?
/**
*
* @author Lelale
*/
public class elMain {
public static void main(String[] args) {
Persona[] persona = new Persona[3];
for(int i = 0; i < persona.length; i++){
persona[i] = new Persona(); // Con esto inicializo una instancia de Persona en cada posición del vector, es importantísimo que esto se haga para que el programa funcione, ya que el vector estará esperando que en cada posición se inicie una instancia u objeto del tipo Persona y no fue inicializada.
}
persona[0].setNombre("Oscar"); //Ingreso los datos de las tres personas que quiero registrar en memoria dentro de las tres posiciones.
persona[0].setApellido("Mariollo");
persona[0].setDireccion("San Martin 324");
persona[1].setNombre("Maria");
persona[1].setApellido("Almeida");
persona[1].setDireccion("Sarmiento 987");
persona[2].setNombre("Juana");
persona[2].setApellido("Criollo");
persona[2].setDireccion("Tucumán 837");
for(Persona p: persona){
System.out.println(p.getNombre()); //Muestro todos los datos que inserté.
System.out.println(p.getApellido());
System.out.println(p.getDireccion());
}
}
}
>
Si bien no creo que usen vectores de clases en sus futuros programas, lo más probable es que usen cosas muy parecidas a ellos.
Por otro lado podemos poner "buscadores" dentro del programa que acabamos de escribir:
<?
/**
*
* @author Lelale
*/
public class elMain {
public static void main(String[] args) {
Persona[] persona = new Persona[3];
for(int i = 0; i < persona.length; i++){
persona[i] = new Persona();
}
persona[0].setNombre("Oscar");
persona[0].setApellido("Mariollo");
persona[0].setDireccion("San Martin 324");
persona[1].setNombre("Maria");
persona[1].setApellido("Almeida");
persona[1].setDireccion("Sarmiento 987");
persona[2].setNombre("Juana");
persona[2].setApellido("Criollo");
persona[2].setDireccion("Tucumán 837");
for(Persona p: persona){
if(p.getApellido().equals("Almeida")){ //Acá está el identificador, con el método de los Strings.equals(String u objeto) da como respuesta un booleano: true si son iguales y false si no.
System.out.println(p.getNombre());
System.out.println(p.getApellido());
System.out.println(p.getDireccion());
}
}
}
}
>
Para que se vea mas fácil:
<?
for(Persona p: persona){
String sAuxiliar = p.p.getApellido(); //Es lo mismo, la diferencia es que en la ejecución del programa hacen que haya una línea más de ejecución, por lo tanto un tiempo de reloj del procesador gastado. Esto en las computadoras de ahora no es nada, pero imagínense un programa con 60 mil líneas de código y que tengan muchos de estos, ahí si que se va a notar la lentitud.
if(sAuxiliar.equals("Almeida")){ /
System.out.println(p.getNombre());
System.out.println(p.getApellido());
System.out.println(p.getDireccion());
}
}
>
En el siguiente programando en Java vamos a ver herencia de clases y un tema un poco complicado de explicar que se llama polimorfismo.