[VB6] cSet by Slek (Orientación a objetos)
Publicado: 31 May 2012, 19:36
Buenas, después de unos meses, vuelvo a la carga :P
Aquí os dejo una clase (cSet) que simula los conjuntos (de números en este caso, pero puede ser de cualquier objeto comparable). Seguro que muchos no lo saben, pero VB6 está orientado a objetos (más o menos), y aunque es una mierda (porque no permite herencia ni polimorfismo) algo se puede hacer :P
Esta clase es muy simple, y nos puede ahorrar bastante código, simplemente se trata de un array en el que puedes añadir los elementos de una forma mucho más sencilla, él solito se encarga de las redimensiones y de llevar la cuenta. Además, si un elemento ya está incluido, no lo vuelve a incluir :P
Ejemplo de uso:
P.D: Está explicado en inglés, pero la verdad, no hay mucho que explicar xD
Saludos!!
Aquí os dejo una clase (cSet) que simula los conjuntos (de números en este caso, pero puede ser de cualquier objeto comparable). Seguro que muchos no lo saben, pero VB6 está orientado a objetos (más o menos), y aunque es una mierda (porque no permite herencia ni polimorfismo) algo se puede hacer :P
Esta clase es muy simple, y nos puede ahorrar bastante código, simplemente se trata de un array en el que puedes añadir los elementos de una forma mucho más sencilla, él solito se encarga de las redimensiones y de llevar la cuenta. Además, si un elemento ya está incluido, no lo vuelve a incluir :P
Código: Seleccionar todo
Option Explicit
'cSet by Slek, for Indetectables.net
'31/5/2012
'Nota: Es un conjunto de Integer (puede ser modificado)
' It's an Integer's Set (can be modified)
Dim Arr() As Integer 'Array of elements
Dim s As Integer 'Number of elements included
Private Sub Class_Initialize()
'Initialize with 0 elements
s = 0
End Sub
Public Sub Add(ByVal n As Integer)
'Include n
If Not Contains(n) Then
ReDim Preserve Arr(s)
Arr(s) = n
s = s + 1
End If
End Sub
Public Function Size() As Integer
'Return number of elements
Size = s
End Function
Public Function Contains(ByVal n As Integer) As Boolean
'Returns if n has already been included
Dim i As Integer
For i = 0 To (s - 1)
If Arr(i) = n Then
Contains = True
Exit Function
End If
Next i
Contains = False
End Function
Public Function toArray() As Integer()
'Return Array
toArray = Arr
End Function
Código: Seleccionar todo
Dim c As New cSet
Dim a() As Integer
Call c.Add(1)
MsgBox c.Contains(1)
Call c.Add(1)
Call c.Add(30)
MsgBox c.Size
a = c.toArray
Saludos!!