Encapsulamiento

04/05/2005 - 14:29 por Ruben | Informe spam
Buenas, mi duda es la siguiente:

Tengo una clase A en la que creo un objeto de clase B, y
en B creo otro de tipo C.

Resulta que en B tengo varios controles (combobox,
textbox etc) y me gustaria poder averiguar su contenido
desde el objeto tipo C.

Hasta ahora la unica solucion que se me ha ocurrido es
declararel objeto B como atributo de A como public
static, pero no se si esta forma es demasiado "cutre".

Os pongo algo del código a ver si me podeis dar ideas:

public class A : System.Windows.Forms.Form
{
public static B inDatos;
...

private void menuItem1_Click(object sender,
System.EventArgs e)
{
this.Hide();
inDatos = new B();
inDatos.ShowDialog(this);
this.Show();
}
}

public class B : System.Windows.Forms.Form
{
//iniciacion de todos los controles
...

private void button1_Click(object sender,
System.EventArgs e)
{
C inConf = new C();
if(inConf.ShowDialog(this)==DialogResult.OK)
Close();
}
}

public class C : System.Windows.Forms.Form
{
...

private void C_Load(object sender,System.EventArgs e)
{
//getDato() me devuelve lo que haya seleccionado
//en el combobox
this.label1.Text=A.inDatos.getDato();
}
}

Supongo que mi pregunta se puede resumir a como acceder
desde un objeto B a miembros de un objeto A...
En c++ era facil porque los objtos estaban todos en el
main, pero aqui no me aclaro muy bien.
Muchas gracias y un saludo ;)

Preguntas similare

Leer las respuestas

#1 Jose Luis Manners
04/05/2005 - 18:31 | Informe spam
Para acceder las propiedades de la clase madre utiliza: base.NombreMetodo

Saludos,

Jose Luis Manners, MCP
English: http://blogs.geekdojo.net/jmanners
Español: http://weblogs.golemproject.com/jmanners/

"Encuentra felicidad en tu trabajo o nunca serás feliz."
Cristóbal Colón

"Ruben" wrote in message
news:044a01c550a4$dcd4a830$
Buenas, mi duda es la siguiente:

Tengo una clase A en la que creo un objeto de clase B, y
en B creo otro de tipo C.

Resulta que en B tengo varios controles (combobox,
textbox etc) y me gustaria poder averiguar su contenido
desde el objeto tipo C.

Hasta ahora la unica solucion que se me ha ocurrido es
declararel objeto B como atributo de A como public
static, pero no se si esta forma es demasiado "cutre".

Os pongo algo del código a ver si me podeis dar ideas:

public class A : System.Windows.Forms.Form
{
public static B inDatos;
...

private void menuItem1_Click(object sender,
System.EventArgs e)
{
this.Hide();
inDatos = new B();
inDatos.ShowDialog(this);
this.Show();
}
}

public class B : System.Windows.Forms.Form
{
//iniciacion de todos los controles
...

private void button1_Click(object sender,
System.EventArgs e)
{
C inConf = new C();
if(inConf.ShowDialog(this)==DialogResult.OK)
Close();
}
}

public class C : System.Windows.Forms.Form
{
...

private void C_Load(object sender,System.EventArgs e)
{
//getDato() me devuelve lo que haya seleccionado
//en el combobox
this.label1.Text=A.inDatos.getDato();
}
}

Supongo que mi pregunta se puede resumir a como acceder
desde un objeto B a miembros de un objeto A...
En c++ era facil porque los objtos estaban todos en el
main, pero aqui no me aclaro muy bien.
Muchas gracias y un saludo ;)
Respuesta Responder a este mensaje
#2 Ruben
04/05/2005 - 20:57 | Informe spam
mmmm no quiero acceder a las propiedades de la clase
madre, sino a los valores que un objeto de otra clase
tiene.
Siento no haberme explicado bien ;)

Un saludo
Respuesta Responder a este mensaje
#3 Tristan
04/05/2005 - 23:05 | Informe spam
Lo que queieres se soluciona pasando a C una referencia a la instancia de B
que la contiene.

Por ejemplo en C, define una propiedad, Parent, de tipo B. Cuando crees la
instancia de C, asigna a Parent la propia instancia que la está creando,
this.

Ahora bien, a mi personalmente no me gusta trabajar así. Creo que es mejor
pasar a C EXACTAMENTE la información que necesita, no una referencia a todo
el objeto B. El problema de que C acceda directamente a los controles de B,
es que un cambio en B, te obliga a modificar C. Por eso es mejor pasar solo
lo imprescindible, reducir el acoplamiento.

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#4 Ruben
05/05/2005 - 00:17 | Informe spam
jajaja acabas de hablar como mi profesor de ingenieria
del
software ;)
A eso me referia a lo de las referencias y tal...lo que
pasa que no sabia como iba en c#.
Si puede te agradeceria que pasases un trozo de codigo
donde apliques la segunda opcion que me has dicho.

Muchas gracias ;)
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida