PDA

Ver la Versión Completa : Ejemplo de OOP


David
06-11-2006, 21:49:24
Hola

he realizado un pequeño ejemplo de clases , lo voy a poner como archivo adjunto , para que veais si la forma de programar es la correcta.

Utilizo interbase y la tabla EMPLOYEE.GDB , que esta en C:\Archivos de programa\Archivos comunes\Borland Shared\Data

De todas maneras lo de la tabla es lo de menos , lo que quiero saber si es una buena forma de programar , y si hay alguna manera de mejorar lo puesto , como seria .

Un saludo

xander
06-11-2006, 22:03:06
No termino de entender tu código, pero trataré de adivinar lo que pretendes:

Quieres trabajar con clases los registros de una base de datos??? algo similar a lo que sería un motor de persistencia relacional??

Si eso es lo que buscas mi consejo es que optes por alguna librería ya hecha para ese proposito y hagas uso de toda la tecnología que estas te brindan.

Instant Objects (http://www.instantobjects.org/) es una muy buena opción para que empieces en ese mundillo

David
06-11-2006, 22:09:18
No pretendo eso , sino , que si te dicen que tienes que programar OOP , pues si tienes que hacer cosas como esas .Esa es la duda .

Yo normalmente , pongo las tablas y los datasource en el modulo de datos , y luego si tuviera que hacer una busqueda lo hago en el formulario correspondiente , pero esto no es OOP , pues eso busco algún ejemplo práctico , de OOP .

Saludos

xander
06-11-2006, 22:11:48
Por eso maestro... trabajar con un motor como Instant Objects sería lo más cercano a realmente trabajar OOP contra una base de datos desde Delphi... lo demás que si el datamodule, que si la conexión donde va, que si tablas o querys, eso ya es preferencia de cada quien, ahi si no hay nada escrito.

Neftali [Germán.Estévez]
07-11-2006, 10:45:14
No pretendo eso , sino , que si te dicen que tienes que programar OOP , pues si tienes que hacer cosas como esas .Esa es la duda.

Vamos a ver, aquí estás mezclando dos conceptos (OOP y OPF).
OOP que yo sepa (significa Object Oriented Programming -si no lo han cambiado últimamente- :D); Programación orientada a objetos, vamos.

Como bien te ha dicho Xander, a lo que tu código se aproxima es a una capa de persistencia (o FrameWork de Persistencia). Estás intentando "mapear" tablas de Bases de Datos en Clases (Proveedor).

Es algo así como intentar trabajar con Orientación a objetos en las Tablas de Base de Datos. Como eso no se puede hacer (ya que una Base de Datos no está orientada a objetos), pues se crea una capa intermedia que nos provee de trabajar con las Tablas como si fueran objetos. Esa capa es un Framework de Persistencia y está formada por un Core y un Diccionario (principalmente); En este caso tu diccionario está formado por la clase (TProveedores).

Imagina ahora que tuvieras 300 clases; Como supongo que en todas no querías programar el Locate, Insert, busquedas, Filtros, borrados,... Pues al final, en el diccionario quedan únicamente las clases y las operaciones se "sacan" al CORE (Gestor, Manejador,... como lo quieras llamar).
Ya tienes dos partes fundamentales del OPF. Luego le añades los Brokers/Conexiones/Conectores... (o como los quieras llamar) para interactuar con las diferentes Base de Datos existentes (ADO, IF, FB, Oracle,...) y tienes la tercera parte.

Bueno, espero no haber aburrido mucho con todo este párrafo.
Básicamente, e intentando contestar a tu pregunta, lo que tú estás haciendo es un paso más allá de la OOP; Es intentar "llevar" la OOP a la Base de Datos y eso tiene el nombre de "Capa de Persistencia".

mamcx
07-11-2006, 15:02:07
Yo normalmente , pongo las tablas y los datasource en el modulo de datos , y luego si tuviera que hacer una busqueda lo hago en el formulario correspondiente , pero esto no es OOP , pues eso busco algún ejemplo práctico , de OOP .

De donde sacaste que no es OOP?

:eek::eek::eek::eek::eek:

Un modulo de datos/Tdatasource/Tdataset es un procedimiento? No, es un objeto. Deriva de otro objeto, usa herencia. Utiliza un sistema polimorfico del cual se hace el streaming de objetos desde el archivo dfm. Tiene propiedades, metodos y eventos. Ende, es un objeto basado en clases que se instancia y se libera.

De hecho, TDataSource/TDataSet son clases excelentes porque aislan mediante una implementacion abstracta una fuente de datos externa.

Mapean usando objetos TField y otros una tabla. Me atrevo a decir que son un OPF, pero version 1.0 ;).

Lo que pasa es que hay implementaciones mejores o peores usando los mismos conceptos OOP.

Una *representacion* tipo Filas/Columnas es ideal para procesar varios registros y una *representacion* 1 a 1 es ideal para manejar de a un solo registro o expresar un workflow.

Es como la diferencia entre manipular matrices y manipular records. Obviamente un OPF trae muchas ventajas, pero convertir a la manipulacion de bases de datos en otra cosa no es una de ellas.