Ver Mensaje Individual
  #8  
Antiguo 02-07-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 25
Delphius Va camino a la fama
Gracias por ayudar AzidRain.

Bueno, a ver... si logro unir las cosas siguiendo tu modelo híbrido. Con lo que yo voy armando.

1. Yo tengo varias clases, que operan y se pasan parámetros. Todo lógica, nada de interfaz... Este conjunto forma la capa lógica.
2. En la capa más baja (Datos) está el/los DataModule/s con el Connection, y posibles algunos que otros Tables, Querys, etc

La comunicación entre las clases y la base de datos debe pasar por el DataModule. Eso creo que está claro, al menos así lo entiendo yo. Y dependiendo de las consideraciones, analáisis, etc... se debe hacer un "canal" más o menos estrecho.

Este canal de comunicación está formado por clases que son las que propiamente tienen encapsulada los eventos y/o procedimientos para permitir las operaciones habituales sobre la base de datos:
*Agregar
*Modificar
*Borrar
*Consultar

Por lo tanto estas clases deberán ser las más bajas de la capa.
Hasta aquí llego teóricamente, ahora... en forma práctica... ¿esto se consigue con algo similar a esto?

Código Delphi [-]
TUnaClaseDeInteres = class
  private
     FModulo: TDataModule; // Un apuntador al DataModule al que debe invadir?
     FConsulta: TQuery; // Un Query para armar consultas?
     // O Tal vez indicar como privado componentes especializados. Como los IBX en mi caso...
  public
     // Propiedades
     constructor Create; override;
     destructor Destroy; override;
     // Funciones y/o procedimientos
     function Agregar(InfoInteres: TInfoInteres): algun_tipo_adecuado; 
     function Agregar: algun_tipo_adecuado; overload;
     // Asi... en forma análoga para Modificar, Borrar y/o Consultar
end;

De modo que, si el análisis lo amerita se pueda hacer algo como:

Código Delphi [-]
TUnaClaseHija = class(TUnaClaseDeInteres);
  private
     FAlgodeInteres: tipo;
     //....
  public
    // Otras cosas interesantes? Algo más directo y especializado para un motor en particular talvez?
end;

Ahora, como le indicaría que debe hacer contacto con el datamodule? Allí me lio... Sería conveniente ver la posibilidad de hacer algo como:
Código Delphi [-]
   UnaClaseDeInteres.AsignarModulo(ElDataModuleAdecuado);

Si voy entendiendo bien... o si tienen críticas, serán escuchadas.
Muchas gracias.
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 02-07-2007 a las 05:40:44.
Responder Con Cita