Ver Mensaje Individual
  #2  
Antiguo 24-01-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - Espańa
Posts: 18.293
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Tema interesante, pero muy extenso.
Tal vez deberías ser un poco más concreto.

Por ejemplo, lo primero que me llama la atención es:
Cita:
Empezado por Jvilomar
...tengo unas clases TClientes, TApartamentos y TVehiculos siendo Tclientes mi ClaseBase y TApartamentos y TVehiculos heredan de esta...
Tal vez como prueba esté bien; Pero no acabo de ver claro que los vehículos y los apartamente deriven de los clientes...

Siguiendo con la pregunta...

Yo en éstos casos distingo dos partes, la parte visual y lo que es el modelo de negocio (las Clases TCliente, TVehículo,...) y los programo por separado.

Mi primera recomendación es que crees una clase base (TClaseBase, por ejemplo) de la cual deriven todas (y que sea abstyracta, es decir, que no tenga lógica de negocio, por lo tanto TCliente no sirve como clase base...), y en esa clase ańadas los métodos que vas a necesitar; Por ejemplo, Grabar, Recuperar, Clonal, Limpiar, Crear, Destruir, Buscar, refrescar,...
Los que haga falta que sean virtuales y/o abstractos los defines como tales.
Eso te dará una idea y te obligará a formar un modelo de tus clases de negocio.

Lo segundo (que no comentas) es cómo vas a mapear las clases en Base de Datos. Que es otra cosa importante que debes tener claro. Hay varias estratégias; Debes decidir cual quieres. Las más comunes son (basándome en el ejemplo de que TApartamento deriva de TCliente):
* Tabla TblCliente con los campos de la clase TCliente y TblApartamento con los campos de TCliente y TApartamento.
* Tabla TblCliente con los campos de la clase TCliente y TblApartamento con los campos de TApartamento que no están en TCliente.

Si busca documentación sobre ésto (Scott Ambler es referencia obligatoria) encontrarás las ventajas/inconvenientes de cada modelo.
http://www.agiledata.org/essays/mappingObjects.html
http://www.agiledata.org/essays/umlD...ngProfile.html
http://www.service-architecture.com/...to_tables.html

http://www.agiledata.org/essays/mapp...ingInheritance

A partir de ahí y con ésta decisión puedes comenzar a implementar métodos básicos; Por ejemplo un buen comienzo es el Insert de una Clase. Si te lo "curras" un poco podrás hacer por ejemplo que el TBaseClase.Insert() te haga los INSERT de todas lasa clases sin necesidad de Redefinirlo (ahí está la potencia de la herencia).

...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 24-01-2006 a las 14:14:26.
Responder Con Cita