POO que no quiere funcionar bien

Iniciado por abreu20011, 8 Agosto 2011, 06:17 AM

0 Miembros y 1 Visitante están viendo este tema.

abreu20011

Saludos :)

Estoy haciendo un programa (bueno, más bien, mejorando el codigo de un programa mio) teniendo más en cuenta la POO pero, aunque funciona, no lo hace correctamente. A ver si alguien sabría decirme porqué >.<

Tengo una clase con varias variables privadas, que se generan por un metodo que no devuelve valor (sub) que le asigna a cada variable un valor. Esto esta hecho así, porque no entiendo porqué no me deja asignar los valores directamente en la clase, por ejemplo:

Código (vbnet) [Seleccionar]
Dim variableArray() As String
variableArray(0) ="Ejemplo 1"
variableArray(1) ="Ejemplo 2"


Me dice "declaration Expected" si lo hago asi, por lo que lo meti en el Sub y no dió más problemas... aunque no entiendo porqué, en cambio, si lo hago asi:

Código (vbnet) [Seleccionar]
Dim variableArray() As String = {"Ejemplo 1","Ejemplo 2"}

Sí funciona :( (pero es que queda muy poco claro, y son muchisimas variable y muchisimos datos para hacerlo "todo en una linea" la idea era que fuera más claro =(

Pero como funcionaba, más o menos me di por satisfecho, hasta que llego la parte en la que el programa llama a este metodo.

En un principio cree la clase en el Main, por ejemplo:

Código (vbnet) [Seleccionar]
Dim clase As Clase_class = New Clase_class
clase.GenerateTask '<- Asi es como he llamado al metodo para que asigne los valores


Pero, aunque no da error, no hace nada... es como si no llamara a ese metodo.
Este es el codigo del botón:


Código (vbnet) [Seleccionar]
Dim ListaTareas As ListaTareas_class = New ListaTareas_class
Sub General_programas_btnClick(ByVal sender As Object, ByVal e As EventArgs)
   ListaTareas.GenerateTask

   Me.general_tarea_info_lbl.Text= ListaTareas.ShowTaskName(0, 0)
   Me.general_info_info_lbl.Text = ListaTareas.ShowTaskInfo(0, 0)
End Sub



Como esta expuesto así sí funciona, pero claro, tengo muchos más botones, y no creo que sea una solución correcta (aunque funcionar, funciona) añadirle el GenerateTask en cada botón.
¡Es como decirle al programa que haga una y otra vez lo mismo no siendo necesario!

Estoy seguro que es un problema de lógica, que algo debo estar olvidando, pero por más que miro y miro el código, no sé me ocurre otra manera de hacerlo funcionar :(

Muchas gracias,
y un saludo ^^

abreu20011

He encontrado el problema xD Mira que un despiste y nada funciona >.< (pero es que llevaba ya tanto tiempo mirándolo que me había cegado :S)

El problema era donde estaba puesto la declaración de la creación del objeto y el metodo. Ahora la clase se crea nada más empezar la clase del modulo (del Main)

Public Partial Class MainForm
Dim ListaTareas As ListaTareas_class = New ListaTareas_class


Y el GenerateTask en primera linea del MainLoad

Menos mal ^^

Si alguien puede explicarme ya sólo lo de la declaración de variables me ayudaría mucho, porque me ahorraría el maldito GenerateTask >.<

Un saludo

x64core

buenas ;D
pues yo diria que no te recomendaria que declares variables de clases asi:

Dim ListaTareas As ListaTareas_class = New ListaTareas_class

ya que son como temporales :P
y en el evento initialize de la clase ahi si se escribe para crear el objeto :P

abreu20011

Cita de: Raul100 en  8 Agosto 2011, 06:58 AM
buenas ;D
pues yo diria que no te recomendaria que declares variables de clases asi:

Dim ListaTareas As ListaTareas_class = New ListaTareas_class

ya que son como temporales :P
y en el evento initialize de la clase ahi si se escribe para crear el objeto :P


Mmmm, ¿Te refieres a que use constantes? :)
Y perdóname ^^ ¿pero donde esta el evento initialize? xD

x64core

:P que la declares a nivel de formulario como normal se declaran las varibles y la inicialises en el evento , el evento esta en todos los modulos clases en la ventana en el combobox de la parte superior derecha estan los eventos y tambien usa el evento terminate para eliminar el objeto