Con la simpleza de las genialidades, GRACIAS !

 

De: GUFA@mug.org.ar [mailto:g...@mug.org.ar] En nombre de Pablo Pioli
Enviado el: Lunes, 17 de Mayo de 2010 06:16 p.m.
Para: GUFA List Member
Asunto: [GUFA] 3 Capas

 

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 <mailto:a...@memory-argentina.com>  

To: GUFA List Member <mailto:GUFA@mug.org.ar>  

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.

 

 

 

Responder a