Sí. Si el juego tiene más de un jugador, es preciso tener una banca, río, juez, árbitro o jugador que hace las veces de banca...
La clase que realiza esa labor, bien puedes llamarla juego.
Nota que el tablero es una instancia y si ha de ser servida a cada jugador, cada jugador tendrá una imagen (solo lectura) del tablero, porque quien realmente maneja el tablero es la clase 'juego'...
Cada jugador cuando el 'juego' le otorgue el turno, hara su jugada indicándoselo al 'juego', el uego verifica si su jugada es legal, hace el movimiento y verifica lo que proceda (puede desencadenar ciertos acontenimientos, según el tipo de juego que sea), luego que actualice el tablero, comunica al resto de jugadores la jugada realizada por qué jugador (por ejmplo, una banda pone el nombre en ella del jugador que tiene el turno) y qué acontenicmientos ha desmbocado (por ejemplo si es un juego de cartas, que ha tirado x carta sobre la mesa, si es un juego de apuestas, el monto de su apuesta... etc...
Tampoco te complique en exceso creando objetos... es bastante común que cuando un programador nobel empieza a entender los objetos, crea objetos para cada cosa, y en vez de tener un jardin delante d ela casa, directamente al abrir la puerta tienes el Amazonas... y al final hay un objeto 'cálcular' que a su vez contiene objetos sumar, restar,... que a su vez contienen objetos número... No. No atomices todo, sólo hasta el punto lógico de entender el proceso con fluidez. Que todo quede bien ubicado entre los objetos que 'naturalmente' surjen...
Un pequeño diagrama representando cada clase, los métodos que contiene y flechas dirigiendo (clases) entre si el flujo, te permiten tener a la vista la lógica de la comunicación. Amplía en prosa (comentarios), la descripcón de cada clase, lo que hace, los miembros que tiene... es común que pasado el tiempo si no lo dominas bien o no recuerdas todos, tengas dudas que en su día ya resolviste, pero que has olvidado, un pequeño comentario te ayuda a recordar enseguida ese detalle que parece que era o es complicado.
Siempre podrás cambiarlo, pero si antes de nada partes de un esuquema, te será más fácil seguirlo y decidir si tal o cual función debe pertenecer a está o aquella clase... y entonces verás que muchas de las dudas se responden con claridad aplastante la mayoría de las veces.
Sí, comprendo.
justamente una de las dudas que nunca he podido resolver, es lo que me dices, de pasar un objeto a otra clase para que lo consulte, por supuesto como solo lectura.
como debería hacer eso?
pasando una referencia del objeto a consultar?
porque si trato de hacer eso como leí que se hace, se la puedo pasar al constructor con el modificador const para que la referencia no se modifique, pero ahí no sé como guardar esa referencia para que otros métodos la usen, o quizás el pasarle la referencia al método que va a usarla y nada más?
estoy tratando de imaginar como se podría hacer...