Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: abreu20011 en 8 Agosto 2011, 06:17 am



Título: POO que no quiere funcionar bien
Publicado por: abreu20011 en 8 Agosto 2011, 06:17 am
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
  1. Dim variableArray() As String
  2. variableArray(0) ="Ejemplo 1"
  3. 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
  1. 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
  1. Dim clase As Clase_class = New Clase_class
  2. 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
  1. Dim ListaTareas As ListaTareas_class = New ListaTareas_class
  2. Sub General_programas_btnClick(ByVal sender As Object, ByVal e As EventArgs)
  3.   ListaTareas.GenerateTask
  4.  
  5.   Me.general_tarea_info_lbl.Text= ListaTareas.ShowTaskName(0, 0)
  6.   Me.general_info_info_lbl.Text = ListaTareas.ShowTaskInfo(0, 0)
  7. 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 ^^


Título: Re: POO que no quiere funcionar bien
Publicado por: abreu20011 en 8 Agosto 2011, 06:42 am
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)

Código:
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


Título: Re: POO que no quiere funcionar bien
Publicado por: x64core en 8 Agosto 2011, 06:58 am
buenas ;D
pues yo diria que no te recomendaria que declares variables de clases asi:

Código:
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


Título: Re: POO que no quiere funcionar bien
Publicado por: abreu20011 en 8 Agosto 2011, 09:33 am
buenas ;D
pues yo diria que no te recomendaria que declares variables de clases asi:

Código:
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


Título: Re: POO que no quiere funcionar bien
Publicado por: x64core en 8 Agosto 2011, 10:04 am
: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