Xojo y las Extensiones de Clase

¿Echas en falta un método en cualquiera de las clases existentes? Quizá lo primero que te venga a la cabeza sea crear tu propia subclase. Error, no siempre es necesario ni la opción más recomendable. Sigue leyendo y verás por qué.

La Extensión de Clase es el mecanismo proporcionado por Xojo para conseguir precisamente eso: crear tus métodos y utilizarlos como parte de una clase.

En muchos casos puedes utilizar la extensión de clase para crear una funcionalidad completamente nueva y, sintácticamente, utilizarla de forma que el código resulte más legible. En otras ocasiones, es implemente para proporcionar lo que se denomina como azúcar sintáctico, un modo de endulzar la sintaxis del código.

Este es precisamente el ejemplo que utilizo aquí, y donde podemos ver lo sencillo que resulta convertir la función Join() incluida por omisión en el framework de Xojo para unir los elementos de un Array.

Módulos

Los métodos que extienden las clases han de definirse como parte de un módulo, y han de emplear la palabra clave extends como primer componente de la definición de los parámetros pasados; siendo la variable asociada con esta palabra clave la receptora del objeto sobre el que se actuará.

Por ejemplo, la siguiente definición declarará un nuevo método para la clase String:

joinElementsUsingSeparator( extends s() as String, separador as string) as String  

Como se puede ver en la definición, extiende la clase String y toma como parámetro adicional una segunda cadena almacenada en la variable ‘separador’; método que devuelve a su vez otra string como resultado. En cuanto al código contenido en dicho método, sería el siguiente:

dim temp as string  
for each element as string in s  
    temp = temp + element + separador
next
if separador <> "" then
    temp = temp.Left(temp.len-1)
end
Return temp  

La variable ‘s’ es la que apunta al objeto en cuestión (la clase extendida o ampliada), de modo que podemos acceder a sus propiedades.

Un ejemplo de su uso sería el siguiente:

dim test() as String =  Array("uno", "dos", "tres", "cuatro")  
MsgBox test.joinElementsUsingSeparator("")  

Ahora bien, no siempre es mejor o lo más recomendable utilizar extensiones de clase en vez de crear subclases o clases completamente desde cero. Recuerda que cada opción tiene su ámbito de aplicación.

2 comentarios en “Xojo y las Extensiones de Clase

  1. David

    Hola:

    No me queda claro. SI compro ahora el libro ¿puedo lo obtengo ya?

    Gracias.

    1. Javier Rodriguez

      Como se indica en la página del libro, ahora estarás comprando el libro en modalidad de prepago (de ahí el 40% de descuento). La disponibilidad es en el próximo mes de septiembre.

      Javier

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *