Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Uso Del Método .Sort Ordenación De Objetos Segun Campo
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Uso Del Método .Sort Ordenación De Objetos Segun Campo 
 
Para entender lo que comenta la documentacion sobre el método .Sort, para la ordenación de listas de objetos, he hecho este pequeño ejemplo.

El metodo Sort, tiene un evento relacionado ( _compare ) que es el que le va indica que comparar para hacer la ordenación.

Mi ejemplo:
Tenemos una lista compuesta por nombre, apellidos y edades.
Lo que quiero hacer es obtener  3 listas ordenadas por el nombre, por el apellidos y por la edad

Os enseño la salida generada...

capturadepantalla-300612-204332


He usado  clases 4 clases:
La ClassPersona: es la que "madre" de las que heredan las otras. Contiene las propiedades (ademas tiene un método para devolver una cadena de texto con los datos).
Public Function informe() As String

    Dim a As String

    a = "     " & hnombre & " " & hapellidos & " " & Str$(hedad) & "\n"
    Return a

End


Y las clases ClassPersonaOrdenApellidos,ClassPersonaOrdenEdad,ClassPersonaOrdenNombre, se diferencian en el metodo _compare que es redefinido segun la forma que queramos ordenar los datos.

Por ejemplo, para ordenar por edad...

Public Function _compare(otro As ClassPersona) As Integer

    If Super.apellidos > otro.apellidos Then
        Return 1
    Else
        If Super.apellidos < otro.apellidos Then
            Return -1
        Else
            Return 0
        Endif
    Endif

End
 

Ademas he incluido dos metodos "convierte" y "conviertelista" que son los encargados de hacer la conversion de los datos de la clase persona (madre) a la propia clase heredada.

Public Function convierte(persona As ClassPersona) As ClassPersonaOrdenApellidos

    Super.apellidos = persona.apellidos
    Super.edad = persona.edad
    Super.nombre = persona.nombre
    Return Me

End

Public Function convierteLista(personaLista As ClassPersona[]) As ClassPersonaOrdenApellidos[]

    Dim personaOrdenApellidos As New ClassPersonaOrdenApellidos[]
    Dim perstemporal As New ClassPersonaOrdenApellidos("", "", 0)
    Dim a As Integer

    For a = 0 To personaLista.count - 1
        perstemporal = New ClassPersonaOrdenApellidos("", "", 0)
        perstemporal.convierte(personaLista[a])
        personaOrdenApellidos.Add(perstemporal)
    Next

    Return personaOrdenApellidos

End


Uso en el Fmain:
  
'ordeno por edad
    ordenadaEdad = ordenadaEdadtemp.convierteLista(lista)

    lista = ordenadaEdad.Sort(gb.Ascent)

    muestralista("Edad", lista)


Os dejo el código fuente completo de la aplicación.

Saludos



Fuente:
http://gambasdoc.org/help/comp/gb/object[]/sort?v3

OrdenarObjetos-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: OrdenarObjetos-0.0.1.tar.gz
Tamaño: 6.19 KB
Descargado: 38 veces
OrdenarObjetos-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: OrdenarObjetos-0.0.1.tar.gz
Tamaño: 6.19 KB
Descargado: 38 veces
OrdenarObjetos-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: OrdenarObjetos-0.0.1.tar.gz
Tamaño: 6.19 KB
Descargado: 38 veces

 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Uso Del Método .Sort Ordenación De Objetos Segun Campo 
 
Julio,

Te hago una consulta:

Estuve revisando tu código y la verdad es muy claro como ha quedao implementada la funcionalidad que quieres mostrar.
Simplemente como no poseo los elementos técnicos, no entiendo bien que es lo que hace "SUPER". Leí el wiki de gamas y vi que es algo vinculado al tema de clases, pero no terminé de entenderlo... Yo lo que hubiera hecho (y sustituyendo en tu código funciona), en lugar de poner por ejemplo SUPER.nombre hubiera puesto Me.nombre...

Gracias desde ya si puedes aclararme mi duda, y de nuevo, excelente la explicación del .sort!
 



 
santijav - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Uso Del Método .Sort Ordenación De Objetos Segun Campo 
 
Hola santijav:

Citar:
"SUPER". Leí el wiki de gamas y vi que es algo vinculado al tema de clases, pero no terminé de entenderlo...


Super hace referencia a la clase de la que  estamos heredando ("Padre").
Por ejemplo, te explico:
La clase ClassPersonaOrdenApellidos("Hija"), esta heredando a la clase ClassPersona("Padre"). Para hacer referencia a las propiedades o metodos de la clase heredada("Padre") usamos "Super".
Para hacer referencia a las propiedades ó métodos de la clase "Hija"  usamos "Me".

Citar:
Yo lo que hubiera hecho (y sustituyendo en tu código funciona), en lugar de poner por ejemplo SUPER.nombre hubiera puesto Me.nombre...

Ok, yo no lo probé, directamente use "Super"... en otras aplicaciones que hice (el mapeador de bases de datos, si me dio muchos problemas usar Me en vez de Super).


Super realmente es util, cuando en la clase que estemos usando hallamos "redifinido" algún método o propiedad con el mismo nombre que tenga el de la clase heredada, y nos interese usar el método tal como este definido en la clase "Padre".

Citar:
excelente la explicación del .sort!

Lo hice asi, porque quedaba más claro para mí... pero no esta optimizado... quiero decir... lo suyo es crear una propiedad "modo" en la clase ClassPersona, donde podamos indicar con su valor como lo queramos ordenar... y en la misma clase (sin usar clases hijas) definir el evento _compare, para que segun el valor de la propiedad "modo", ordene.
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Uso Del Método .Sort Ordenación De Objetos Segun Campo 
 
Excelente! Gracias Julio. Ahora sí tengo claro el uso del SUPER.
 



 
santijav - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Tamaño Segun Resolucion Pablo-GNU General 2 Viernes, 02 Julio 2010, 08:53 Ver último mensaje
shordi
No hay nuevos mensajes Consulta Acerca De Una Matriz De Objetos: ... santijav General 6 Jueves, 21 Abril 2011, 05:14 Ver último mensaje
soplo
No hay nuevos mensajes DrawingArea, Comportamiento Segun Gtk O Qt4 Shell Controles/Librerías/Componentes 1 Martes, 28 May 2013, 12:52 Ver último mensaje
jsbsan
No hay nuevos mensajes Ejemplo De Uso De Gridview Con Ordenación... shordi Aplicaciones/Fragmentos de Código 3 Miercoles, 26 Junio 2013, 09:32 Ver último mensaje
shordi
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron