gravatar

Cómo crear componentes en Gambas - Parte 4



Antes de empezar a codificar es necesario tomar algunas decisiones de diseño y explicar algunos detalles sobre el mecanismo de componentes de usuario que ofrece Gambas.

En primer lugar, para que las clases contenidas dentro de un componente sean accesibles a los usuarios se debe incluir la palabra clave EXPORT como parte de la declaración de cada clase.

La segunda cuestión que se debe abordar es si la clase Notify será instanciable. Pero, ¿por qué no habría de serlo?

La respuesta emerge claramente si se analiza la tabla de miembros propuesta anteriormente: en ella se observa que no existen atributos que deban guardar un "estado" específico para distintos objetos. De hecho no se percibe en absoluto que exista necesidad de crear objetos a partir de Notify.

Desde otra perspectiva podemos pensar que la única responsabilidad de la clase Notify es ejecutar el comando notify-send, de modo que sus atributos sólo se utilizan para poder pasar sus valores como argumentos a dicho comando.

Entonces, Notify podría ser una clase estática, es decir, una clase con todos sus miembros estáticos y que no se puede instanciar.

Esto conduce al tercer aspecto a considerar: las clases estáticas son cómo módulos, la única diferencia es que éstas se pueden especializar, en cambio los módulos no. Se puede deducir entonces que si no existe necesidad de extender la clase Notify, bien podría convertirse en un módulo.

Aunque esto es posible y razonable en cierto sentido, debido a que no podemos predecir con certeza el futuro, no podemos descartar la posibilidad de que más adelante surja la necesidad de crear una clase derivada de Notify. Ya que es más flexible utilizar una clase estática que un módulo y debido a que queremos mantenernos fieles al paradigma de programación orientada a objetos, Notify definitivamente será una clase estática.

La última cuestión que se debe atender es qué pasa con los valores de los atributos de la clase Notify entre una invocación y otra del método Send.

Ya que los atributos de un objeto son variables de memoria que guardan datos y debido a que Notify será una clase estática, una vez que se establezcan sus atributos, sus valores permanecerán inalterados hasta una próxima modificación. Lo importante es considerar que sería posible llamar al método Send repetidas veces sin establecer nuevamente sus atributos, es decir, con los mismos valores (o algunos) que en la ejecución anterior. Si se quiere evitar esta posibilidad, entonces es necesario inicializar los atributos de la clase Notify, luego de cada ejecución del método Send.

Pero en realidad, esto carece de importancia ya que sería similar a ejecutar el comando notify-send sin argumentos, por lo que deliberadamente lo ignoraremos confiando en que los usuarios de la clase Notify son programadores que perfectamente pueden tratar con este detalle.


Los comentarios están habilitados para que los lectores puedan participar en la corrección del libro, realizar preguntas puntuales o sugerencias. Todo comentario fuera de estos objetivos será eliminado. Por favor, tenga en cuenta lo siguiente:

- Cumpla las normas de etiqueta.

- Realice críticas constructivas.

- No sea redundante.