Comunicacion entre un objeto contenido en otro

Miguel
24 de Enero del 2008
Hola,

Necesito ayuda con un problema que me he encontrado a la hora de implentar un programa que estoy llevando acabo.

El caso es que tengo una clase (imagenemos que es la clase "biblioteca"). Dicha clase tiene un vector que contienen una serie de objetos (supongamos "Libros"). Mi problema aparece a la hora de cuminicarse los libros con la biblioteca, ya que no se como puedo acceder a ella. Evidentemente, la biblioteca accede a los libros sin problemas, ya que es el que los contiene, pero no viceversa.

Lo unico que se me ha ocurrido es el crear un tercer objeto que de alguna manera sea acccesible por los dos, pero no se muy bien como hacerlo..agradeceria alguna ayuda.

Muchas gracias de antemano.

Miguel
24 de Enero del 2008
Soy yo de nuevo, que ya he conseguido solucionar el problema!

Os digo como se hace por si alguien esta interesado:


La verdad es que al final, preguntando y buscando, me han dado una solucion bastante trivial. El codigo seria asi:

//Clase Biblioteca
public class Biblioteca{
Libro[ ] lib; // Contiene array de libros
}

//Clase libro
public class Libro{

//Cada libro guarda una referencia de la biblioteca donde esta contenido
private Biblioteca _MI_BIBLIOTECA;

public void Libro(Biblioteca new_biblioteca){ _MI_BIBLIOTECA = new_biblioteca}
}

El problema que señalaba, es que si los libros querian comunicarse con la Biblioteca, no sabia como hacerlo, ya que eran objetos del array que a priori no saben que estan contenidos en la biblioteca.

La solucion que he puesto es simple: cuando se crea un libro, en la constructura se le pasa por parametro la biblioteca que lo contiene, de esta manera puede acceder a todas sus funciones.(!!)

Ciao!