10 de abril de 2012

Interfaces en VFP

Como todos sabemos, VFP no ofrece una forma nativa de declarar ni aplicar interfaces, mas alla de la interaccion con objetos OLE.

La clase InterfaceHelper (http://www.victorespina.com.ve/wiki/index.php?title=Implementacion_de_interfaces_en_VFP) ofrece una forma sencilla (aunque limitada) de lograr los beneficios del uso de interfaces en VFP.

Su uso es muy sencillo:

1) Se declara una variable publica que almacene una instanca de interfaceHelper:
PUBLIC goInterfaces   && Puede ser cualquier nombre
goInterfaces = CREATE("interfaceHelper")

2) Se declaran las interfaces como clases derivadas de la clase Interface:
DEFINE CLASS IEnumerable AS Interface
  Count = 0
  DIMEN Items[1]
ENDDEFINE

3) Se publica la interfaz en el helper de interfaces:
goInterfaces.Declare("IEnumerable")

4) Se usa el metodo Implements del helper para determinar si un cierto objeto implementa una interfaz publicada:
IF goInterfaces.Implements(oData, "IEnumerable")
  FOR i = 1 TO oData.Count
  ...
  ENDFOR
ENDIF

En el caso de versiones de VFP anterior a la 9, no es posible declarar las interfaces mediante subclases de Interface, pero aun asi puede hacerse manualmente:
goInterfaces.Declare("IEnumerable","count,items")

Saludos

Victor Espina

No hay comentarios. :

Publicar un comentario