• Viernes 17 de Mayo de 2024, 06:58

Autor Tema:  relacion de clases  (Leído 2797 veces)

divmas

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
relacion de clases
« en: Domingo 20 de Marzo de 2011, 11:25 »
0
Hola a todos,

resulta que tengo un problema que me está volviendo loco por más que miro y miro.... os explico:

si tengo una clase jugador y otra clase demarcacion... como se relacion entre si?  pongamos que tengo las dos clases:

Public Class c_jugador
    Public id As Integer
    Public nombre As String
    Public apellido1 As String
    Public apellido2 As String
    Public demarcacion As c_demarcacion
end class

Public Class c_demarcacion

    Public id As Integer
    Public nombre As String
    Public siglas As String

End Class


de esta forma a la hora de crear un objeto jugador podria crear a la vez un objeto demarcacion pero claro no le veo lógica si quiero que "coja" un objeto ya creado en c_demarcacion.

No sé si me he explicado con claridad

Podria alguien ayudarme?

gracias de antemano

gabio2

  • Miembro MUY activo
  • ***
  • Mensajes: 402
  • Nacionalidad: mx
    • Ver Perfil
Re: relacion de clases
« Respuesta #1 en: Domingo 20 de Marzo de 2011, 15:18 »
0
No le vez lógica si quieres que coja un objeto ya creado en c_demarcacion .. amm.. no pues creo que no te entendi del todo.. :S  tu lo que isiste ahí es solo crear.. 2 clases.. y una de esas clases.. contiene un objeto de la otra.. " Public demarcacion As c_demarcacion ", eso normalmente se usa.. cuando.. tu clase c_jugador, puede contener a su vez.. los mismos atributos.. que c_demarcacion, para no tener que volver a declarar sus variables dentro de la misma clase..... ahora no entiendo que es lo que no entiendes.. jejejeje... si podrias ser un poquito más específico..... me ayudarias un poco más.. saludos! :) ...
@gabio87

divmas

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: relacion de clases
« Respuesta #2 en: Domingo 20 de Marzo de 2011, 15:39 »
0
Lo explicaré de otra manera:

quiero que esas dos clases se relacionen de tal forma que un jugador solo pueda tener una demarcacion pero que coja los datos de un objeto ya creado en demarcacion.

gracias.

gabio2

  • Miembro MUY activo
  • ***
  • Mensajes: 402
  • Nacionalidad: mx
    • Ver Perfil
Re: relacion de clases
« Respuesta #3 en: Domingo 20 de Marzo de 2011, 19:29 »
0
Digamos que tienes 2 objetos.. uno de cada clase:
Código: vb.net
  1.  
  2. Dim _objJugador As New c_jugador
  3. Dim _objDemarcacion As New c_demarcacion
  4.  
  5.  

Entonces, supongo que en alguna parte de tú código le asignas valores a cada una de tus variables de tu objeto '_objDemarcacion' y esos valores quieres que los contenga de igual manera el objeto '_objJugador' entonces solo tienes que hacer una asignación, tal cuál como lo haces con tus variables, lo que quedaria algo como esto:

Código: vb.net
  1.  
  2. _objJugador.demarcacion = _objDemarcacion
  3.  
  4.  

Y listo, el objeto _objJugador a su vez ya contiene todos los valores de _objDemarcacion en su variable 'demarcacion' ...


a eso te refieres?... nosé si eso es lo que necesitas.. un saludo
@gabio87

divmas

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: relacion de clases
« Respuesta #4 en: Domingo 20 de Marzo de 2011, 19:49 »
0
A la tercera va la vencida... :)
mira lo que necesito realmente es relacionar las dos clases... lo que se llama una relación de asociación por lo que he visto...

porque claro si tengo en una base de datos una tabla con todas las demarcaciones y en otra una tabla con todos los jugadores... se relacionan por el id_demarcacion pero a la hora de cargar en las clases como relacionar eso?? sabes??

muchas gracias por tu ayuda

gabio2

  • Miembro MUY activo
  • ***
  • Mensajes: 402
  • Nacionalidad: mx
    • Ver Perfil
Re: relacion de clases
« Respuesta #5 en: Domingo 20 de Marzo de 2011, 20:29 »
0
Si es como yo supongo.. un jugador puede tener.. 1 o N demarcaciones... no?.. bueno.. es sencillo, en tu consulta hacia tu base de datos.. primero obtienes todas las demarcaciones que esten relacionadas con un Juador entonces.. en tu clase jugador puedes agregar una variable de tipo ArrayList :

Código: vb.net
  1.  
  2. public ListaDemarcaciones As ArrayList 'Para poder usar el ArrayList si no me equivoco debes Importar el System.Collections.  
  3.  
  4.  

Voy a suponer que sabes hacer.. todo con respecto a tu conexión de base de datos.. y que llenas en un DataTable todas las demarcaciones relacionadas con un Jugador.. por lo tanto..:

Código: vb.net
  1.  
  2. _objJugador.ListaDemarcaciones = New ArrayList 'Aquí estoy instanciando mi variable ListaDemarcaciones del objeto _objJugador que pertenece a mi clase c_jugador
  3. For Each dr As DataRow In MiDataTable.Rows
  4. _objDemarcacion = New c_demarcacion 'Aquí le digo que por cada REGISTRO que exista en mi tabla va a hacer una nueva instancia de mi objeto por lo tanto es como un nuevo objeto cada vez que encuentre un registro en mi tabla
  5. _objDemarcacion.id = Cint(dr(0).ToString()) ' Supongo que el ID es numérico por lo tanto lo convierto en entero para asignarselo a tu variable 'id' , tambien supondré que el id se encuentra en tu primera columna es por eso que es dr(0).ToString()
  6. _obDemarcacion.nombre = dr(1).ToString()
  7. _obDemarcacion.siglas = dr(2).ToString()
  8.  
  9. 'Ahora vamos a agregar el objeto [b]_objDemarcacion[/b] a mi Lista
  10. _objJugador.ListaDemarcaciones.Add(_objDemarcacion) 'Aquí mi variable ListaDemarcaciones agrega a la lista valga la redundancia .... a mi variable.. es decir.. practicamente mi objeto _objJugador ya tiene la demarcacion correspondiente en su Lista..
  11. Next
  12.  
  13. 'TODO ESO LO VA A HACER POR CADA REGISTRO.. Y LISTO..
  14.  
  15.  

aunque sigo sin saber si es esto lo que necesitas. xD .. jajaja.. ya me doy! :)..

Saludos.. espero te ayude en algo..
@gabio87

divmas

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: relacion de clases
« Respuesta #6 en: Lunes 21 de Marzo de 2011, 17:47 »
0
Muchas gracias, era eso lo que queria tenia alguna duda pero me la has resuelto perfectamente.