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.