Ver Mensaje Individual
  #3 (permalink)  
Antiguo 21/10/2011, 03:08
forumtecnico
 
Fecha de Ingreso: abril-2011
Mensajes: 6
Antigüedad: 13 años
Puntos: 1
Respuesta: Pasar de código estructurado a Orientado a Objetos

Cuesta trabajo cambiar un programa de estructurado a orientado a objetos, pero lo que más cuesta es cambiar la "mente" del programador para que piense en objetos. Es un problema más bien filosófico, salvando las distancias.
Cuando haces un programa estructurado, los elementos del mismo son herramientas inertes a las que tú les dices en cada momento qué hacer. Sin embargo, en la orientación a objetos cada elemento del programa es un "actor" que sabe qué tiene que hacer y tiene lo datos necesarios para hacerlo. Es por eso por lo que te cuesta tanto acceder desde una clase a los datos de otra. La solución no es abrirle paso a la fuerza para que pueda acceder, más bien eso debe darte la pista de que te has equivocado colocando ese dato fuera de donde realmente se usa.
Sé que es un poco rollo pero es así.
En tu caso veo que hay tres "actores": el selector de la letra elegida por el usuario, el controlador que lleva la cuenta de intentos-aciertos-fallos y por último el que muestra la imagen del ahorcado. El flujo de información es unidireccional:

selector--->controlador--->imagen

Si te fijas, cada uno sólo necesita conocer sus propios datos y avisar al siguiente (llamada a un método) de que tiene que actualizarse. Por ejemplo, el controlador es el único que conoce la palabra buscada y únicamente tiene que pasarle a la imagen cuál es la cuenta de aciertos actual. La imagen no tiene que saber cómo el controlador ha calculado ese dato. En el caso del selector, sólo tiene que conocer la lista del alfabeto y pasarle al controlador qué letra es elegida en cada momento. No sabe absolutamente nada del juego.
En el problema que dices con el JLabel, evidentemente es que el JLabel debe pertenecer a la clase que va a usarlo, no a otra.
Por supuesto, como dice Fuzzylog, una parte importante del trabajo es separar la interfaz (el GUI) del programa propiamente dicho. Cada clase le dirá a "su" parte de la interfaz lo que hacer.
Saludos
www.forumtecnico.com

Última edición por forumtecnico; 21/10/2011 a las 03:11 Razón: respuesta de otro forero