Apúntate...


Consultas, desarrollo de programas y petición de presupuestos:

sábado, 29 de diciembre de 2012

Propiedades y Métodos (.add, .remove, .find, etc) de array de objetos

Propiedades y Métodos aplicables a array de objetos


Propiedades
bounds Retorna una cadena, que informa sobre el tipo de clase
count Devuelve el numero de elementos que tiene el array
data Retorno el puntero del dato
dim Retorna el numero de dimensiones del arrray
length Igual que count
max Devuelve el mayor indice del array: array.max=array.count-1
type Devuelve el tipo de dato. (ver: Constantes predefinidas de tipo de dato)
Métodos
Clear Limpia el array.
.Clear ( )
Remove Borra uno o mas elementos del array
.Remove ( Index As Integer [ , Length As Integer ] )
Resize Cambia el tamaño del array disminuyendolo o expandiendolo (solo es posible usarlo en array de una dimension)
.Resize ( Size As Integer )
add Añada (o inserta en la posicion indicada) un nuevo elemento nuevo.
.Add ( Value As Object [ , Index As Integer ] )
copy Retorna la copia de parte del array
.Copy ( [ InicioIndice As Integer, Longitud As Integer ] ) As Object[]
delete Borrar parte del array, retornandolo
.Delete ( InicioIndice As Integer [ , longitud As Integer ] ) As Object[]
exist Devuelve verdadero si existe la referencia al objeto dentro del array
.Exist ( Value As Object ) As Boolean
existbyref Al igual que el método exist, pero sin usar el metodo especial _compare
extract Igual que delete
fill Rellena un array con un objeto determinado
.Fill ( Value As Object [ , Start As Integer, Length As Integer ] )


find Busca un objeto dentro del array devolviendo la posicion donde que ocupa. Si no lo encuentra devuelve -1. Se puede indicar una posicion de inicio de la busqueda.
.Find ( Value As Object [ , Start As Integer ] ) As Integer
findbyref Al igual que find, pero sin usar el metodo especial _compare
insert Inserta un array de objetos dentro del mismo array, se puede especificar una posicion, sino, lo hará al final del array.
.Insert ( Array As Object[] [ , Pos As Integer ] ) As Object[]




pop Borra el último elemento del array, retornandolo.
.Pop ( ) As Object
push Añade un array al final del array (es una simplificacion del método .add)
.Push ( Value As Object )
reverse Invierte el orden del array de elementos y los devuelve
.Reverse ( ) As Object[]
sort Ordena el array Ascententemente (gb.ascent) o descendentemente (gb.descent)
Para ordenalo usa el método especial _compare
.Sort ( [ Mode As Integer ] ) As Object[]

Para más información:
Arrays tipo cadena de caracteres[]: http://gambaswiki.org/wiki/comp/gb/string[]?l=es


A continuación pongo un ejemplo, de como usar el método sort en un array de de objetos.
Tenemos una clase llamada ClassPersona, en ella tenemos dos propieades (nombre y edad). Queremos que los array que de esta clase se ordene por el nombre (en la documentacion de gambaWiki, viene ordenado por la edad (vease este enlace).

Este seria el código de la clase ClassPersona:
-->
' Gambas class file
Property edad As Integer
Private hedad As Integer

Property nombre As String
Private hnombre As String

Private Function nombre_Read() As String
Return hnombre
End

Private Sub nombre_Write(Value As String)
hnombre = Value
End

Private Function edad_Read() As Integer
Return hedad
End

Private Sub edad_Write(Value As Integer)
hedad = value
End

Public Function _compare(Other As ClassPersona) As Integer
' Return Sgn(hedad - Other.edad)
If hnombre > Other.nombre Then Return 1
Return -1
End
Nota:
Fijaos que el en método especial _compare, he puesto comentado como seria ordenando por la edad.

Ahora pasamos a crear el programa principal, donde creo el array de objetos (listaPersonas) y los voy a ordenar y mostrar de forma ascendiente y descendiente:
-->
Dim a As Integer 'contador para el for...next
Dim per As New ClassPersona 'objeto que nos sirve para ir añadiendo valores al array
Dim listaPersonas As ClassPersona[] 'array de objetos de la clase ClassPersona
per.edad = 23
per.nombre = "Eva Muñoz"
listaPersonas = New ClassPersona[]
listaPersonas.Add(per) 'añado nuevo elemento al array
per = Null 'borro el objeto

per = New ClassPersona
per.edad = 34
per.nombre = "Julio Sanchez"
listaPersonas.Add(per) 'añado nuevo elemento al array

 'ordeno....
listaPersonas = listaPersonas.Sort(gb.Ascent)
'muestro en la consola los valores de los objetos
Print "Edad", "Nombre (ascendiente)"
For a = 0 To listaPersonas.Max
Print listaPersonas[a].edad, listaPersonas[a].nombre
Next
'ahora los muestro de forma descendiente:
listaPersonas = listaPersonas.Sort(gb.Descent)
'muestro en la consola los valores de los objetos
Print "Edad", "Nombre (descendiente)"
For a = 0 To listaPersonas.Max
Print listaPersonas[a].edad, listaPersonas[a].nombre


Enlace del ejemplo completo: codigo completo

No hay comentarios:

Publicar un comentario en la entrada

A falta de donativos... un poco de publicidad