https://foro.gambas-es.org/viewtopic.php?f=1&t=5655
-----------------------------------
v3ctor
Lunes, 18 Julio 2016, 16:06

Agrupar Clases En Que Tipo De Variable?
-----------------------------------
buenas,

supongamos que tenemos un programa x, que usa clases....
supongamos que quiero agrupar x clase en un array de clases.... :roll:  :shock:  u objetos no se, por eso la pregunta. :shock: 

pues bien como se agrupan? en que tipo de variable?

variable de objeto[]  ?

la pregunta es especifica para agrupar un tipo de clase solo, en un array.... pero también se puede comentar si quisiéramos guardar en un array o agruparlas siendo clases de distinto tipo

saludos.


-----------------------------------
vuott
Lunes, 18 Julio 2016, 17:02

Re: Agrupar Clases En Que Tipo De Variable?
-----------------------------------
v3ctor, uhmmm....por ahora me refiero a lo que escribí [i]jguardon[/i] en este su mensaje:

https://foro.gambas-es.org/show_post.php?p=33276


-----------------------------------
jguardon
Lunes, 18 Julio 2016, 17:34

Re: Agrupar Clases En Que Tipo De Variable?
-----------------------------------
Efectivamente, puedes crear un array Object[] que contenga diferentes instancias de una clase, de la misma clase, puesto que no tiene sentido mezclar tipos diferentes dentro del mismo array.

También podrías usar colecciones, aunque depende del uso que vayas a darle, siempre serán más rápidos los arrays dinámicos.

Saludos


-----------------------------------
vuott
Lunes, 18 Julio 2016, 19:14

Re: Agrupar Clases En Que Tipo De Variable?
-----------------------------------
Generalmente una Clase (...o mejor: [i]más objetos[/i] de una Clase) puede ser agrupada en una variable vectorial de [u]su mismo tipo[/u].

Por lo que se rifiere a la agregación de dos o más Clases de tipo diferente, tu puede usar:
- una [i]Collection[/i] (como ha dicho [i]jguardon[/i]);
- una variable array de tipo Variant[ ];
- una Estructura.

En este ejemplo creamos 4 botones y 4 label.
Luego agregamos los 4 botones en una variable array de tipo [i]Button[ ][/i], y las 4 Label en una variable array de tipo [i]Label[ ][/i] .
Tambien agregamos cada objeto (4 botones y 4 Label) [u]juntos[/u] en una variable de tipo [i]Variant[ ][/i].

En fin las dos primeras variables array serán agregadas en una sola variable de tipo [i]Variant[ ][/i].

[code linenumbers=false syntax=gambas]Public Sub Form_Open()

  Dim b As Byte
  Dim bt As Button
  Dim botones As New Button[]
  Dim lb As Label
  Dim llbb As New Label[]
  Dim todo As New Variant[]
  Dim arraydearray As New Variant[]
  
' Creamos y luego agrupamos 4 botones en un array de tipo "Button[]":
    For b = 1 To 4
      With bt = New Button(Me)
        .W = 60
        .H = 30
        .X = .W * b
        .Y = 50
        .Name = "Button " & CStr(b)
        .Text = .Name
      End With
      botones.Push(bt)
      todo.Push(bt)
    Next
    
    Print botones.Count
    
' Creamos y luego agrupamos 4 label en un array de tipo "Label[]":
    For b = 1 To 4
      With lb = New Label(Me)
        .W = 60
        .H = 30
        .X = .W * b
        .Y = 100
        .Name = "Label " & CStr(b)
        .Border = Border.Dotted
        .Alignment = Align.Center
        .Text = .Name
      End With
      llbb.Push(lb)
      todo.Push(lb)
    Next
    
    Print llbb.Count
    Print
    
' A ver el nombre de los objetos ensertados en el array "todo":
    For b = 0 To todo.Max
      Print todo[b].Name
    Next
    
    
' Agrupamos los dos array en un array de tipo "Variant[]":
    With arraydearray
      .Push(botones)
      .Push(llbb)
    End With
    Print
' Vamos a ver el testo de la 3^ Label:
    Print arraydearray[1][2].Text

End[/code]


-----------------------------------
v3ctor
Martes, 19 Julio 2016, 14:47

Re: Agrupar Clases En Que Tipo De Variable?
-----------------------------------
esto es posible....

clase CuboMovil


dim GrupoCuboMovil as new CuboMovil[]


?????


-----------------------------------
vuott
Martes, 19 Julio 2016, 15:20

Re: Agrupar Clases En Que Tipo De Variable?
-----------------------------------
[quote user="v3ctor" post="33454"]esto es posible....

?????[/quote]

Practicamente sì.

A ver un ejemplo muy muy sencillo.

Tenemos una Clase secundaria, llamada [i]v3ctor[/i]:
[code linenumbers=false syntax=gambas]' Gambas class file



Public Sub Calculus(i As Integer) As Integer
  
    Return i * 100
  
End[/code]


La Clase principal es esta:
[code linenumbers=false syntax=gambas]Public v3 As V3ctor


Public Sub Form_Open()

  Dim vv33 As New V3ctor[]
  Dim i As Integer
  
  
    v3 = New V3ctor
    
    vv33.Push(v3)
    
    i = vv33[0].Calculus(4)
    
    ValueBox1.Value = i

End[/code]


