Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-08-2007
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Duda sobre OOP y capas

A ver, se aceptan sugerencias:

Estoy haciendo un proyecto y quiero seguir al pie de la letra OOP y capas por lo que me olvidé por el momento de controles data-aware y demás. Uso como motor MySQL.

Ya hice un pequeño control de datos de empresas. De manera que definí las siguientes clases:

TCatalogoEmpresas y TEmpresa. Hasta aqui se ve obvio como se trabaja. TCatalogoEmpresas se encarga de gestionar las n TEmpresas que pueda haber. Digamos que estas dos clases pertenecen a la capa de negocio. La capa de Datos la manejo por medio de un datamodule y sus correspondientes querys y demás.

TCatalogoEmpresas tiene los siguentes metodos:

Function GetListaEmpresas:TZQuery;
Devuelve una tabla que muestra las empresas que hay en la BD. Solo para efectos de visualización ya que no permite su edición. Este query se lo pide a la capa de datos.

Function GetEmpresa(aIDEmpresa:String):TEmpresa;
Devuelve la TEmpresa cuyo ID sea el indicado, genera una excepción si el ID no se encuentra.

Function NewEmpresa:TEmpresa;
Construye una nueva empresa para trabajarla.

Procedure InsertEmpresa(aEmpresa:TEmpresa)
Inserta aEmpresa como nueva empresa.

Hasta aqui todo funciona excelente pero hay cosas que no me gusta como se ven, por ejemplo para editar una empresa hago esto:

Código Delphi [-]
      FViewEmpresa := TFViewEmpresa.Create(nil);
   try
      try
        EmpresaAnterior := CatalogoEmpresas.GetEmpresa(  GridViewEmpresasRFC.EditValue);
        EmpresaEditada  := CatalogoEmpresas.GetEmpresa(  GridViewEmpresasRFC.EditValue);
        If FViewEmpresa.EditaEmpresa( EmpresaEditada ) Then
           CatalogoEmpresas.UpDateEmpresa( EmpresaAnterior, EmpresaEditada );
           GridViewEmpresas.DataController.DataSource.DataSet.Refresh;
      Finally
         EmpresaEditada.Free;
         EmpresaAnterior.Free;
      end;
   finally
     FViewEmpresa.Free;
   end;
Lo que no me gusta es eso de UpdateEmpresa, bastaría con pasarle una TEmpresa y que esta se actualzara pero resulta que en la capa de datos las cosas son diferntes a los objetos ya que cad TEmpresa es en realidad un registro de una tabla y se actaulizan por medio de un UPDATE TABLE de SQL hay que indicarle a ese query cual es la clave del registro a modificar: "update table empresas set.... where clave=laclave"
Hasta aqui no pasaria nada pues con los datos de tempresa de puede hacer el query sin problemas pero...que pasa si en TEMpresa se le editó el campo clave?? Entonces ya no podriamos editarlo en la tabla porque aunque tenemos los nuevos valores no tenemos forma de localizar el registro anterior.

Alguna sugerencia para y que el codigo quede mas simple?

Ahora otra mas.
Tenemos nuestra TEmpresa que contienen los datos de la empresa y algunas cosas mas. Tenemos una Forma TFViewEmpresa que muestra los datos de la empresa. Como les decia, no uso componentes dataaware para poder seguir el esquema completo de capas, pero por ejemplo para llenar los campos de la forma con los datos de la clase tengo que hacer una serie de asignaciones y para guardar es lo mismo...hay alguna otra forma'?
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
sobre aplicacion de 3 capas yoyo Providers 4 03-08-2007 18:08:12
Duda sobre DFS enrique_84 Varios 2 08-06-2006 11:53:40
Una duda sobre los Uses jorch_yr Varios 1 30-05-2004 04:39:40
Una duda sobre ADO PTW Conexión con bases de datos 1 13-04-2004 23:33:14
Duda sobre ADO Omar Alejandro Conexión con bases de datos 7 31-05-2003 19:52:58


La franja horaria es GMT +2. Ahora son las 02:08:16.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi