Veo que tenes un archivo de configuracion. Ponele nombres distintos a cada capa
y levantas de ahi el nombre de la que queres usar.
* Saco esto del archivo de configuracion
obj = "Label"
* Creo el objeto que me hace falta
x = CreateObject(obj)
Pablo Pioli
----- Original Message -----
From: Alejandro Paciotti Iacchelli
To: GUFA List Member
Sent: Monday, May 17, 2010 6:03 PM
Subject: [GUFA] 3 Capas
Estimados colisteros:
Tengo una duda en cuanto a la implementación de clases en 3
capas y es la siguiente:
Una capa de datos se encarga de comunicarse con la base de datos y subir las
consultas y respuestas a la clase de negocios, por ende, si yo cambiase la capa
de datos, la clase de negocios tendría que salir funcionando perfectamente. Con
lo cual la aplicación lograría escalabilidad.
Ahora bien, suponiendo que yo desarrollo una capa de datos llamada
CapaDeAccesoaDatos, con la funcionalidad de conectarse a un SQLSERVER, pero
también tengo otra clase, CapaDeAccesoaDatos con la funcionalidad de conectarse
a un FIREBIRD o un Access o base nativa de FOX.
Las clases de negocio implementarían objetos basados en esa clase, pero, que
pasa si yo tengo que hacer que convivan entre ellas estas clases ?
A ver si con código me explico mejor:
&& Esta es la clase de Acceso a Sql Server (Es solo un ejemplo breve)
DEFINE CLASS CapaDeAccesoaDatos AS CUSTOM
cStringDeConexion = ""
nConexion = 0
PROCEDURE INIT (cArchivoDeConfiguracion)
THIS.cStringDeConexion =
FILETOSTR(cArchivoDeConfiguracion)
ENDPROC
PROCEDURE Conectar
THIS.nConexion=SQLSTRINGCONNECT(cStringDeConexion)
ENDPROC
PROCEDURE Ejecutar(cInstruccion)
=SQLEXEC(THIS.nConexion, cInstruccion)
ENDPROC
ENDDEFINE
&& Y esta es la clase de Acceso a una base de FOX
DEFINE CLASS CapaDeAccesoaDatos AS CUSTOM
cNombreDeBaseDeDatos= ""
PROCEDURE INIT(cArchivoDeConfiguracion)
THIS. cNombreDeBaseDeDatos =
FILETOSTR(cArchivoDeConfiguracion)
ENDPROC
PROCEDURE Conectar()
OPEN DATABASE (THIS.cNombreDeBaseDeDatos)
ENDPROC
PROCEDURE Ejecutar(cInstruccion)
&cInstruccion
ENDPROC
ENDDEFINE
Si pongo estas 2 clases en un solo PRG, cuando creo un objeto:
oBase = CREATEOBJECT("CapaDeAccesoaDatos", "ArchivoConfiguracion.txt")
crea el objeto de acuerdo al último DEFINE CLASS.
Si los pongo en distintos PRG tengo que especificar en el FRONT que clase de
acceso a datos usar, ya que en los DEFINE de la clase de negocios no puedo usar
el SET PROCEDURE TO.
No se si los marié con la pregunta, es muy probable, pero sería una
consecuencia del propio mareo que tengo.
De antemano, gracias.