Se detallan métodos con los cuales se facilita el recorrido de Objetos que se encuentran dentro de otros objetos. De la misma forma se presenta una estrategia para agregar elementos a un vector estático y permitir la ilusión que este se ajusta al nuevo tamaño.
Importante: Se debe agregar String finDeLinea = System.getProperty("line.separator"); para reemplazar el "\n" para compatibilidad entre plataformas.
2. Planeta – Nave - Persona
Un problema común en trabajo con
Objetos en la necesidad de recorrer clases
que se encuentran al interior de otras clases.
Incluso muchas veces estas clases son
Vectores completos que deben ser accedidos
sucesivamente.
Public class Planeta{
String nombre;
Nave [] visitantes;
}
Public class Nave{
String nombre;
Persona [] tripulantes;
}
Public class Persona{
String nombre;
}
3. Un paso mas lejos de Get
Para simplificar los códigos se acostumbra
a dotar las clases de sus propios métodos de
recorrido que no consiste solo en recuperar el
valor de la propiedad con Get.
Al interior de la clase Nave
public String ImprimirTripulantes()
{
String cadena="";
for (int i = 0; i < tripulantes.length; i++) {
cadena=cadena +
tripulante[i].getNombre() + "n";
}
return cadena;
}
4. No imprimir lo que no hay
Si hay dudas que exista un valor al interior
de los vectores a recorrer, se debe verificar la
diferencia con el null y posteriormente
recorrerlo.
Al interior de la clase Planeta
public String ImprimirNaves(){
String cadena="";
if(visitantes!=null)
{
for (int i = 0; i < visitantes.length; i++)
{
cadena=cadena + visitantes[i].getNombre()+
"n" ;
}}else {cadena="sin visitantes";}
return cadena;
}
5. Todo en uno
Cuando se tiene un anidamiento(clases
dentro de clases) de varios niveles. Es posible
emplear un método que agrupe recorridos
con una sola invocación.
Al interior de la clase Planeta
public String ImprimirCompleto(){
String cadena="";
if(visitantes!=null)
{
for (int i = 0; i < visitantes.length; i++)
{cadena=cadena + "Nombre nave: ";
cadena=cadena + visitantes[i].getNombre()+
"n" ;
cadena=cadena +
visitantes[i].ImprimirTripulantes();
}}else {cadena="sin visitantes";}
return cadena;
}
6. Llegando de Uno en Uno
Hay casos que es necesario agregar
al vector atributo de una clase un
elemento de uno en uno. Lo que es un
problema al ser un vector estático.
Para solucionarlo se realiza lo siguiente.
Importante: Una mejor practica es emplear
la librerías collection de Java
Al interior de la clase Planeta
public void AgregarVisitante(Nave visitantenuevo){
if(visitantes==null){
visitantes=new Nave[1];
visitantes[0]=visitantenuevo;
}else{
Nave [] temp=new Nave[visitantes.length + 1];
for (int i = 0; i < temp.length-1; i++) {
temp[i]=visitantes[i];
}
temp[temp.length-1]=visitantenuevo;
visitantes=temp;
}
}