elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [VB6] cSet (Orientación a objetos)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [VB6] cSet (Orientación a objetos)  (Leído 2,500 veces)
Slek Hacker

Desconectado Desconectado

Mensajes: 35


El Conocimiento nos hace Libres...


Ver Perfil
[VB6] cSet (Orientación a objetos)
« en: 31 Mayo 2012, 21:41 pm »

Se trata simplemente de una clase que permite usar un array como un conjunto, es decir, él mismo se encarga de redimensionar al añadir o eliminar un elemento, y si un elemento ya se encuentra en el array, no lo vuelve a incluir. El conjunto lo he hecho de Integer, pero se puede hacer de cualquier objeto comparable.

Código
  1. Option Explicit
  2.  
  3. 'cSet by Slek, for Indetectables.net
  4. '31/5/2012
  5.  
  6. 'Nota:  Es un conjunto de Integer (puede ser modificado)
  7. '       It's an Integer's Set (can be modified)
  8.  
  9. Dim Arr()   As Integer          'Array of elements
  10. Dim s       As Integer          'Number of elements included
  11.  
  12. Private Sub Class_Initialize()
  13. 'Initialize with 0 elements
  14.  
  15.    s = 0
  16.  
  17. End Sub
  18.  
  19. Public Sub add(ByVal n As Integer)
  20. 'Include n
  21.  
  22.    If Not contains(n) Then
  23.        ReDim Preserve Arr(s)
  24.        Arr(s) = n
  25.        s = s + 1
  26.    End If
  27.  
  28. End Sub
  29.  
  30. Public Sub remove(ByVal n As Integer)
  31. 'Exclude n
  32.  
  33.    Dim i   As Integer
  34.    Dim b   As Boolean
  35.  
  36.    For i = 0 To (s - 2)
  37.  
  38.        If Arr(i) = n Then b = True
  39.  
  40.        If b Then Arr(i) = Arr(i + 1)
  41.  
  42.    Next i
  43.  
  44.    s = s - 1
  45.    ReDim Preserve Arr(s - 1)
  46.  
  47. End Sub
  48.  
  49. Public Function size() As Integer
  50. 'Return number of elements
  51.  
  52.    size = s
  53.  
  54. End Function
  55.  
  56. Public Function contains(ByVal n As Integer) As Boolean
  57. 'Returns if n has already been included
  58.  
  59.    Dim i   As Integer
  60.  
  61.    For i = 0 To (s - 1)
  62.  
  63.        If Arr(i) = n Then
  64.            contains = True
  65.            Exit Function
  66.        End If
  67.  
  68.    Next i
  69.  
  70.    contains = False
  71.  
  72. End Function
  73.  
  74. Public Function toArray() As Integer()
  75. 'Return Array
  76.  
  77.    toArray = Arr
  78.  
  79. End Function

Ejemplo de uso:

Código
  1. Dim c As New cSet
  2. Dim a() As Integer
  3.  
  4. Call c.add(1)
  5.  
  6. MsgBox c.Contains(1)
  7.  
  8. Call c.add(1)
  9. Call c.add(30)
  10.  
  11. MsgBox c.size
  12.  
  13. Call c.remove(1)
  14.  
  15. a = c.toArray

Saludos!!


En línea

raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: [VB6] cSet (Orientación a objetos)
« Respuesta #1 en: 31 Mayo 2012, 22:26 pm »

Esa clase no esta orientada a objetos. Es como el objeto Collection, solo que este no permite duplicados. Aunque algo es algo :P

No es recomendable aprender POO con vb6  :silbar:


En línea

Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.089



Ver Perfil WWW
Re: [VB6] cSet (Orientación a objetos)
« Respuesta #2 en: 1 Junio 2012, 13:02 pm »

@Slek Hacker
Mira esto que hice hace tiempo:
cCollectionEx.cls
Y aún se puede mejorar mucho, que conste. :rolleyes:

No es recomendable aprender POO con vb6  :silbar:
Qué gran verdad, sólo te vale para hacerte una lejana idea. :-\

DoEvents! :P
En línea

Slek Hacker

Desconectado Desconectado

Mensajes: 35


El Conocimiento nos hace Libres...


Ver Perfil
Re: [VB6] cSet (Orientación a objetos)
« Respuesta #3 en: 1 Junio 2012, 19:23 pm »

Uhmm muy bueno, no lo había visto jeje
Una pregunta, qué es mejor, crear el array de objetos dinámico o con un límite fijo, lo digo por eso de ocupar memoria.

Saludos!
En línea

79137913


Desconectado Desconectado

Mensajes: 1.169


4 Esquinas


Ver Perfil WWW
Re: [VB6] cSet (Orientación a objetos)
« Respuesta #4 en: 1 Junio 2012, 19:27 pm »

HOLA!!!

Lo mejor es crear un array dinamico que se vaya agrandando siempre a 2*ubound(array). de esta manera tenes un metodo "exponencial de crecimiento" sin gastar mucha memoria.

Recomiendo iniciar el Array en 1024 Items.

GRACIAS POR LEER!!!
En línea

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: [VB6] cSet (Orientación a objetos)
« Respuesta #5 en: 4 Junio 2012, 09:30 am »

Uhmm muy bueno, no lo había visto jeje
Una pregunta, qué es mejor, crear el array de objetos dinámico o con un límite fijo, lo digo por eso de ocupar memoria.

Saludos!

Es mejor crear paginas de memoria... implementando listas enlazadas... aun que todo depende del uso que se le de...

Dulces Lunas!¡.
En línea

The Dark Shadow is my passion.
Slek Hacker

Desconectado Desconectado

Mensajes: 35


El Conocimiento nos hace Libres...


Ver Perfil
Re: [VB6] cSet (Orientación a objetos)
« Respuesta #6 en: 5 Junio 2012, 21:08 pm »

Es mejor crear paginas de memoria... implementando listas enlazadas... aun que todo depende del uso que se le de...

Dulces Lunas!¡.

También tenía en mente implementar las listas enlazadas :P a ver si lo consigo.

Saludos! y gracias por comentar :)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Orientaciòn con Guitar pro 4
Ingeniería Inversa
ju77 0 1,885 Último mensaje 21 Julio 2004, 03:49 am
por ju77
Orientación...
Programación Visual Basic
BADBYTE-K 1 2,156 Último mensaje 31 Mayo 2005, 12:42 pm
por DaSystem
Orientación?
Hacking Mobile
Samy4ever 4 3,724 Último mensaje 19 Abril 2010, 08:22 am
por SirGraham
Orientacion c/c++ « 1 2 »
Programación C/C++
Pirat3net 11 8,193 Último mensaje 23 Mayo 2011, 14:17 pm
por D4RIO
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines