martes, 15 de abril de 2014

Primeros Pasos con las Clases en Visual Foxpro 9.0

Ahora les comparto cómo iniciar con el uso de las Clases en Visual Foxpro 9.0

En realidad, este artículo es una explicación que el maestro Fernando D. Bozzo me ofreció en alguna ocasión sobre el tema de las clases.

Voy a intentar explicarlo a mi manera pero respetando sus ejemplos originales. A ver que tal queda...

Hay esencialmente 2 maneras de crear clases con VFP.

A través de código, lo cual resulta muy didáctico a la vez.

Y a través del diseñador de clases que te ayuda a crear las clases de forma más interactiva, pero el contenido será el mismo, nada más que presentado de otra forma.

Ejemplo usando código:

Crea un programa llamado MisClases.prg usando MODIFY COMMAND MisClases desde la ventana de comandos de VFP y dentro pon esto:

DEFINE CLASS ordenador AS CUSTOM
    Ram = "2 GB"

    PROCEDURE obtener_Ram
        RETURN THIS.Ram
    ENDPROC

    PROCEDURE setear_Ram
        LPARAMETERS tcValor
        THIS.Ram = tcValor
    ENDPROC
ENDDEFINE

Ahora, desde la ventana de comandos vamos a instanciar y usar esta clase así, copiando de a una línea por vez:

oo = NEWOBJECT( "ordenador", "MisClases.PRG" )
MESSAGEBOX( oo.obtener_Ram() )   && Te muestra "2 GB"
oo.setear_Ram( "3 GB" )
MESSAGEBOX( oo.obtener_Ram() )   && Te muestra "3 GB"
CLEAR ALL

Ejemplo utilizando el diseñador de clases:

En este caso te vas a ahorrar la creación de las líneas DEFINE CLASS y ENDDEFINE y los PROCEDURE/ENDPROC.

Elige el menú File / New / Class y luego el botón New File.

Te muestra un cuadro de diálogo con 3 datos:

Class Name ==> escribe ordenador
Based on ==> selecciona custom
Store in ==> escribe MisClases

Y al final elige el botón OK.

Ya estás viendo el diseñador de clases (la clase es ese rectángulo con unos pequeños cuadrado/circulo/triángulo agrupados y de título "ordenador").

Ya tenemos la clase, ahora le agregamos la propiedad Ram:

Vas al menú Class y eliges New Property, te muestra otro cuadro de diálogo:
Name ==> escribe Ram
Default/Initial value ==> borra el .F. que tiene y escribe "2 GB" sin las comillas.

Luego eliges el botón Add y finalmente el botón Close.

Es probable que en la parte derecha veas la ventana de propiedades de la clase con la nueva propiedad Ram. Si no ves esa ventana, la puedes abrir usando el menú Window / Properties Window, y te vas al final de todo, hasta abajo, donde vas a ver tu nueva propiedad.

Ahora creamos los métodos. Elige el menú Class / New method, en el cuadro de diálogo que aparece, a la derecha del título "name" escribe obtener_Ram y elige el botón Add. Vas a ver que en la ventana de propiedades se agrega ese método.

Ahora agrega el método setear_Ram, elige el botón Add y luego Close.

Una vez cerrado el cuadro de diálogo seguimos con la ventana de propiedades. Haz doble click en el método "setear_ram" y pega este código, que es el mismo que usamos antes:

LPARAMETERS tcValor
THIS.Ram = tcValor

y cierra la ventana del código (o pulsa CTRL + W). Vas a ver que aparece un texto en negrita que dice [User Procedure], lo que indica que ese método tiene código.

Ahora hacemos lo mismo para el otro método: Doble click en "obtener_ram" y pega este código:

RETURN THIS.Ram

y cierra la ventana del código (o pulsá CTRL + W). Finalmente cierra la ventana de la clase que tiene el título "Class designer - misclases.vcx (ordenador)" y cuando te pregunte "Do you want to save changes?" elige Yes.

Ahora estamos nuevamente en la ventana de comandos.

Vamos a instanciar y usar esta clase así, copiando de a una línea por vez:

oo = NEWOBJECT( "ordenador", "MisClases.VCX" ) && Como ves, ahora usamos el VCX que acabas de crear.
MESSAGEBOX( oo.obtener_Ram() )   && Te muestra "2 GB"
oo.setear_Ram( "3 GB" )
MESSAGEBOX( oo.obtener_Ram() )   && Te muestra "3 GB"
CLEAR ALL

Listo. Ahora puedes ver la diferencia entre crear una clase como un PRG o con el diseñador, que la guarda como VCX (y VCT, ya que son dos archivos).

Para más ejemplos de código de clases puedes ver el directorio Samples dentro del directorio de instalación de Visual FoxPro.

Esperamos que esto sirva para arrancar con el tema de las clases con VFP.

2 comentarios:

  1. pues quiero agradecerte, pues esta explicación fue como la luz al final del túnel. Fue rápida,concisa y contundente

    ResponderBorrar
  2. Por nada amigo! De hecho la explicación fue originalmente expuesta por el maestro Fernando D. Bozzo. Solo la compilé de forma que pueda ser simple para leer. Saludos!

    ResponderBorrar