Módulos en Xojo

En la anterior entrega vimos de pasada la característica de los Módulos en Xojo atendiendo a la necesidad que representan a la hora de crear extensiones de clase, dado que es el único modo de crear y escribir este tipo tan especial de métodos. En esta entrega ahondaremos algo más sobre las capacidades de los módulos en nuestras aplicaciones Xojo.

Como ya se esbozaba en la anterior entrega, puedes pensar en los módulos como en una capacidad organizativa para tu código que te permite crear verdaderas librerías que puedes reutilizar una y otra vez en tus proyectos. Por ejemplo, una excelente muestra de ello es uno de los proyectos Xojo más emblemáticas para OS X: MacOSLib.

Listado de módulos con jerarquía de contenidos en proyecto MacOSLib

También supone el mejor modo de que puedas disponer de una serie de elementos de forma global para que puedan acceder cualquiera del resto de objetos que compongan tu aplicación; como por ejemplo una serie de propiedades, constantes y métodos cuyos valores y funcionalidad estén disponible para su uso por parte de cualquiera de las ventanas que compongan tu aplicación, o incluso también por parte del propio Objeto Aplicación.

Adicionalmente, una de las capacidades por las que se utilizan los módulos con mayor frecuencia en Xojo es para la localización de aplicaciones; es decir, el proceso por el que todos los textos utilizados por la interfaz de tus aplicaciones (o generados de forma dinámica en tiempo de ejecución) se presentarán a los usuarios de tus productos en el idioma bajo el que estén utilizando el sistema operativo.

Los módulos representan la mejor opción para crear las constantes de localización para los textos de nuestras apps

 

Obviamente, Xojo proporciona a través de los módulos la capacidad de definir las constantes de texto cuyos valores podrás indicar en un idioma u otro, así como el uso correcto de cada caso en función del idioma detectado. Para ello sólo has de marcar la casilla Dynamic en el panel Inspector.

La traducción propiamente dicha corre de tu cuenta. Ahora bien, Xojo también te ayuda en esta parte mediante la excelente aplicación gratuita Lingua (disponible para todos los sistemas operativos soportados). Y si lo que buscas es ayuda para localizar tus apps a diferentes idiomas, entonces igual te interesa echar un vistazo a servicios como CrowdIn o Babble-On entre muchos otros.

Visibilidad de elementos en módulos

Los módulos de Xojo son el único componente que permite definir propiedades, constantes, métodos y clases con visibilidad (Scope) Global. Esto significa que sólo es preciso referirse a dichos elementos por su nombre en el Editor de Código desde cualquier parte del proyecto.

Ahora bien, salvo quizá en el caso de las propiedades declaradas como globales, lo mejor para evitar colisiones es utilizar la notación por punto (dot notation) y emplear siempre que sea posible una visibilidad de tipo Public (pública) como mucho.

Así, si tenemos un módulo con el nombre “Libreria” y una propiedad “personas” declarada con visibilidad Public, deberemos de referirnos a ella en el Editor de Código desde cualquier otro elemento utilizando la siguiente sintaxis:

    libreria.personas

Por último, la visibilidad Private (Privada) indica que el elemento del lenguaje sobre el que se aplique sólo será visible por parte de otros componentes disponibles en el mismo módulo. Ahora bien, en este sentido has de tener en cuenta lo siguiente: puedes crear módulos dentro de módulos.

Esto significa que un elemento cuya visibilidad sea marcada como Private en un módulo anidado sólo será visible para el resto de los elementos incluidos en ese mismo módulo anidado, y no para los elementos que residan en el módulo o módulos superiores en la jerarquía. En cambio, los elementos marcados como Private en los módulos superiores de la jerarquía sí que serán visibles para el resto de los elementos que se encuentren comprendidos en los módulos anidados que cuelguen de ellos.

Módulos anidados en Xojo y visibilidad de elementos

Por ejemplo, en la jerarquía de módulos mostrada en la imagen el elemento ‘visibleParaTodosLosModulos’ será accesible por cualquiera de los elementos comprendidos en el módulo ‘ModuloAnidado’. Ahora bien, el elemento ‘VisibleSoloParaElementosDeEsteModulo’ está incluido en un módulo anidado y, por lo tanto, no será visible para los elementos que cuelgan del módulo principal ‘extensionesDeClase’.

Por otra parte, las constante, propiedades y métodos creados en módulos anidados sólo podrán tener visibilidad Protected (Protegida) o Private (Privada), mientras que las clases incluidas en módulos anidados podrán tener una visibilidad Public (Pública) o Privada.

Módulos anidados y uso de notación por punto para acceder a sus contenidos

Como puedes ver en el ejemplo mostrado en la imagen, es posible utilizar el mismo nombre para diferentes elementos siempre y cuando no colisiones entre ellos; cada uno en su módulo. Posteriormente se utiliza la notación por punto para recorrer la jerarquía de módulos hasta indicar el elemento al que nos estamos refiriendo.

Aun así, mi consejo es que evites, en la medida de lo posible, el uso de nombres poco significativos o repetidos para diferentes módulos que cuelguen de una misma jerarquía. Así te resultará más sencillo saber cuál es su función y también el tipo de dato asignado en su definición.

Exportar Módulos

Por último, y comentaba hacia el principio de esta entrega, una de las ventajas que aportan los módulos es su capacidad de actuar como librerías o entidades independientes que, al igual que ocurre con las propias clases, puedas reutilizar en tus proyectos o incluso compartir con otros desarrolladores.

En este caso además, puedes aprovechar la capacidad de cifrar las clases de modo que si quieres distribuir tus módulos puedas mantener la certeza de que otros desarrolladores no accederán al código principal contenido en tus clases.

Para exportar un módulo, sólo has de seleccionarlo en el Navegador de Proyecto y elegir la opción File > Export ‘nombre módulo’… En el diálogo resultante sólo restará seleccionar la ubicación de destino y el formato de archivo entre XML o el más compacto formato binario de Xojo.

Enlaces de Interés sobre Xojo

Artículos anteriores

Javier Rodríguez (@bloguintosh) es desarrollador OS X e iOS, director de Macsoluciones.com. Puedes contactar con él para el desarrollo de aplicaciones para Mac e iOS en entornos empresariales así como consultoría y formación.

Javier Rodríguez

Javier Rodríguez (@bloguintosh) es desarrollador y autor del eBook "Programación Multiplataforma Xojo". Puedes contactar con él para el desarrollo de aplicaciones y soluciones multiplataforma, así como consultoría y formación en www.aprendexojo.com

0 0 votos
Article Rating
Subscribe
Notify of
0 Comments
Opiniones Inline
Ver todos los comentarios
0
Me encantaría saber tu opinión, por favor, deja un comentariox
()
x