Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/06/2011, 04:57
Tarzan
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 18 años, 5 meses
Puntos: 1
Encapsulación de objetos

Hola a tod@s,

tengo un problema y no sé resolverlo porque no entiendo bien el concepto.

He implementado 3 clases.

Una clase casilla, una clase tablero y una clase partida.

class casilla {
private:
int x;
int y;
bool jugador;

public:
void putJugadorCasilla(bool j) { jugador=j;}
}


La clase casilla tiene una coordenada X, otra Y y un booleano que indica si tiene o no una ficha sobre ella.

La clase tablero tiene un atributo que es un array de casillas de 10x10.

class tablero {
private:
Casilla tablero_juego [10][10];
public:
Casilla getCasilla(int i, int j) { return tablero_juego[i][j]; }
}



La clase partida, tiene un objeto tablero en su interior entre otras cosas.

class partida {
Tablero tablero;
}


Mi duda es la siguiente. Desde el main yo me creo un objeto partida.

Partida partida;

Ahora quiero situar el Jugador en la posición 5,5.

Utilizo las funciones de cada clase:

partida.getTablero().getCasilla(5,5).putJugadorCas illa(true);

Y no me actualiza la casilla 5,5 con el jugador.

¿Por qué me pasa esto?
¿Qué no estoy encapsulando bien?

¿Es por el tema del paso por referencia?
Aquí recupero el tablero desde partida y obtengo la casilla a la que quiero asignarle el valor true al atributo jugador. Cuando uso esto:

partida.getTablero().getCasilla(5,5).getX()

me devuelve el valor 5 perfectamente pero cuando se trata de modificar la casilla del tablero no lo hace.

Luego compruebo si jugador de la casilla 5,5 está a true y está a false.

Esta es mi duda.

Un saludo.