Aunque el ejemplo no está terminado. Se me presenta la siguiente duda:
- Crear el objeto desde _new en una clase, dándole unos valores al constructor para instanciarlo.
- Crear y definir las propiedades del objeto desde otro lugar
Comencemos por lo segundo. Era lo que estaba usando en el ejemplo hasta hoy.
Bien. El motivo de hacer publicas las variables supongo que era para que lo reconociera en otro lugar.
En realidad estaba usando Me y el nombre de la variable dentro de la misma clase.. (al igual que una propiedad)
Anteriormente yo hacia esto para definir donde se debe dibujar un cuadrado en una rejilla creada sobre un DrawingArea.
La creación de la celda o marca se hacía de esta forma:
Public Sub CrearCelda(cx As Integer, cy As Integer, jugador As String)
Dim celda As ClaseCelda
'Creo aquí la ficha para que una vez creada, haga el refresco del area de dibujo
'Es en la clase rejilla donde se conoce el tamaño que va a tener una ficha
'Ya que depende de las dimensiones de la rejilla o TABLERO
cx = cx \ tcelda
cy = cy \ tcelda
If Not existemarca[cx, cy] Then
existemarca[cx, cy] = True
celda = New ClaseCelda(cx, cy, tcelda, tcelda, jugador)
gceldas.Add(celda)
Else
Message.Info("Celda ya seleccionada")
Endif
Me.Refresh
End
Dim celda As ClaseCelda
'Creo aquí la ficha para que una vez creada, haga el refresco del area de dibujo
'Es en la clase rejilla donde se conoce el tamaño que va a tener una ficha
'Ya que depende de las dimensiones de la rejilla o TABLERO
cx = cx \ tcelda
cy = cy \ tcelda
If Not existemarca[cx, cy] Then
existemarca[cx, cy] = True
celda = New ClaseCelda(cx, cy, tcelda, tcelda, jugador)
gceldas.Add(celda)
Else
Message.Info("Celda ya seleccionada")
Endif
Me.Refresh
End
Al cambiar y usar propiedades en vez de variables privadas o públicas , la clase puede quedar de esta forma:
El método de creación de la celda cambia su código quedando así:
Public Sub CrearCelda(cx As Integer, cy As Integer, sjugador As String)
Dim celda As ClaseCelda
'Creo aquí la ficha para que una vez creada, haga el refresco del area de dibujo
'Es en la clase rejilla donde se conoce el tamaño que va a tener una ficha
'Ya que depende de las dimensiones de la rejilla o TABLERO
cx = cx \ tcelda
cy = cy \ tcelda
If Not existemarca[cx, cy] Then
existemarca[cx, cy] = True
celda = New ClaseCelda
With celda
.x = cx
.y = cy
.alto = tcelda
.ancho = tcelda
.jugador = sjugador
End With
gceldas.Add(celda)
Else
Message.Info("Celda ya creada anteriormente")
Endif
Me.Refresh
End
Dim celda As ClaseCelda
'Creo aquí la ficha para que una vez creada, haga el refresco del area de dibujo
'Es en la clase rejilla donde se conoce el tamaño que va a tener una ficha
'Ya que depende de las dimensiones de la rejilla o TABLERO
cx = cx \ tcelda
cy = cy \ tcelda
If Not existemarca[cx, cy] Then
existemarca[cx, cy] = True
celda = New ClaseCelda
With celda
.x = cx
.y = cy
.alto = tcelda
.ancho = tcelda
.jugador = sjugador
End With
gceldas.Add(celda)
Else
Message.Info("Celda ya creada anteriormente")
Endif
Me.Refresh
End
Ahora no existe un constructor en la clase y se define las propiedades desde otro lugar.
Cuando uso propiedades. ¿ Debería usar un constructor o es mejor definir las propiedades del objeto desde otro lugar ?.
Saludos