Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2009-07

Programando con Objetos

4 messages · 2 people ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Giuseppe Luigi Punzi Ruiz

Hola a todos,

En Delphi, normalmente, siempre trabajaba con componentes data-aware, conectados directamente a la BBDD. �ste acercamiento, no es que me guste demasiado, pero Delphi daba las posibilidades f�cilmente.

En Smalltalk, me acostumbr� a trabajar s�lamente con "Objetos". Mis objetos guardaban colecciones de otros Objetos (Objeto Empresa -> variable de instancia, colecci�n de Clientes), y no ten�a que preocuparme de la Vista, o de la persistencia, que pod�a tenerla en cuenta m�s tarde. �ste acercamiento me gusta mucho, y, puesto ahora s�lo pienso en Browsers, Inspectors y Debugger de Smalltalk, se me hace cuesta arriba trabajar con Lazarus/Delphi. Adem�s, �ltimamente, Lazarus se me queja demasiado a la m�nima, y no es que la depuraci�n haga mucho....

Me gustar�a poder seguir ese modelo en Lazarus (MVC vamos, pero a poder ser, sin usar frameworks de terceros). Poder tener mis objetos independientes, de la vista, y de la persistencia. Lo que, no se me ocurre, es, si yo guardo, por ejemplo, en el Objeto Empresa, en una variable de instancia de clase, una colecci�n de Clientes, c�mo transcribo esta informaci�n a un DataGrid?.

Alguien podr�a echarme un cable con �sto?

Giuseppe Luigi Punzi Ruiz
Blog: http://www.lordzealon.com
Twitter & Skype & GoogleTalk accounts: glpunzi

Reply by email

Julio C. Taborda
to Giuseppe Luigi Punzi Ruiz

Hola Giuseppe,

Show quoted text 8 lines
En Smalltalk, me acostumbr� a trabajar s�lamente con "Objetos". Mis objetos guardaban colecciones de otros Objetos (Objeto Empresa -> variable de instancia, colecci�n de Clientes), y no ten�a que preocuparme de la Vista, o de la persistencia, que pod�a tenerla en cuenta m�s tarde. �ste acercamiento me gusta mucho, y, puesto ahora s�lo pienso en Browsers, Inspectors y Debugger de Smalltalk, se me hace cuesta arriba trabajar con Lazarus/Delphi.

No conozco smalltalk, pero para programar con objetos hace un tiempo que vengo probando el framework tiopf (http://tiopf.sourceforge.net/). Este framework tiene 2 clases (tiobject y tiobjectlist) que se usan como base de tus propias clases (p.ej. tempresa=class(ttiobject)) y trae distintos m�todos para la persistencia de datos.

Una peque�a introducci�n:
http://tiopf.sourceforge.net/Doc/overview/index.shtml http://tiopf.sourceforge.net/Doc/QuickStart/

Me gustar�a poder seguir ese modelo en Lazarus (MVC vamos, pero a poder ser, sin usar frameworks de terceros). Poder tener mis objetos independientes, de la vista, y de la persistencia.

Una vez creados los objetos, para la persistencia hay que seleccionar que capa de persistencia se quiere usar por defecto y establecer los datos de la conexi�n a la base de datos.

Show quoted text 5 lines
Lo que, no se me ocurre, es, si yo guardo, por ejemplo, en el Objeto Empresa, en una variable de instancia de clase, una colecci�n de Clientes, c�mo transcribo esta informaci�n a un DataGrid?.

Para la parte de las vistas usa MGM (model-gui-mediator) para relacionar los objetos con cualquier control gr�fico. (http://www.andypatterns.com/index.php/design_patterns/model_gui_mediator_pattern) (http://opensoft.homeip.net/articles/)

Si te interesa para tener una idea, el c�digo se encuentra en la carpeta tiopf2 -> Trunk -> GUI
en las unidades timediators.pas, tilistmediators.pas y en la carpeta core las unidades tibasemediator.pas,tiformmediator.pas

Alguien podr�a echarme un cable con �sto?

Reply by email

Giuseppe Luigi Punzi Ruiz
to Julio C. Taborda

Hola Julio,

El 25/07/2009, a las 15:21, Julio C. Taborda escribi�:

Show quoted text 20 lines
Hola Giuseppe, > > En Smalltalk, me acostumbr� a trabajar s�lamente con "Objetos". Mis > objetos guardaban colecciones de otros Objetos (Objeto Empresa -> > variable de instancia, colecci�n de Clientes), y no ten�a que > preocuparme de la Vista, o de la persistencia, que pod�a tenerla en > cuenta m�s tarde. �ste acercamiento me gusta mucho, y, puesto ahora > s�lo pienso en Browsers, Inspectors y Debugger de Smalltalk, se me > hace cuesta arriba trabajar con Lazarus/Delphi. No conozco smalltalk, pero para programar con objetos hace un tiempo que vengo probando el framework tiopf (http://tiopf.sourceforge.net/). Este framework tiene 2 clases (tiobject y tiobjectlist) que se usan como base de tus propias clases (p.ej. tempresa=class(ttiobject)) y trae distintos m�todos para la persistencia de datos. Una peque�a introducci�n: http://tiopf.sourceforge.net/Doc/overview/index.shtml http://tiopf.sourceforge.net/Doc/QuickStart/

Si, hace un tiempo estuve ojeando MVC para Delphi, y v� que estaba TIOPF y PressObjects. �ste �ltimo no llegu� a mirarlo, y TiOPF, me suena que me pareci� bastante complicado de manejar. Lo mismo estoy equivocado. Tambi�n me suena que me di� problemas para hacerlo funcionar en OSX.

Show quoted text 9 lines
> Me gustar�a poder seguir ese modelo en Lazarus (MVC vamos, pero a > poder ser, sin usar frameworks de terceros). Poder tener mis objetos > independientes, de la vista, y de la persistencia. Una vez creados los objetos, para la persistencia hay que seleccionar que capa de persistencia se quiere usar por defecto y establecer los datos de la conexi�n a la base de datos.

Esta es la idea, que la persistencia ya est� implementada, y de manera transparente. Sabes si crea la BBDD, campos y dem�s cosas necesarias sin tener que tocar nada de SQL?

Show quoted text 17 lines
> Lo que, no se me > ocurre, es, si yo guardo, por ejemplo, en el Objeto Empresa, en una > variable de instancia de clase, una colecci�n de Clientes, c�mo > transcribo esta informaci�n a un DataGrid?. > Para la parte de las vistas usa MGM (model-gui-mediator) para relacionar los objetos con cualquier control gr�fico. (http://www.andypatterns.com/index.php/design_patterns/model_gui_mediator_pattern ) (http://opensoft.homeip.net/articles/) Si te interesa para tener una idea, el c�digo se encuentra en la carpeta tiopf2 -> Trunk -> GUI en las unidades timediators.pas, tilistmediators.pas y en la carpeta core las unidades tibasemediator.pas,tiformmediator.pas

Le echar� un vistazo tambi�n...

Giuseppe Luigi Punzi Ruiz
Blog: http://www.lordzealon.com
Twitter & Skype & GoogleTalk accounts: glpunzi

Reply by email

Julio C. Taborda
to Giuseppe Luigi Punzi Ruiz

Hola Giuseppe,

Show quoted text 5 lines
Si, hace un tiempo estuve ojeando MVC para Delphi, y v� que estaba TIOPF y PressObjects. �ste �ltimo no llegu� a mirarlo, y TiOPF, me suena que me pareci� bastante complicado de manejar. Lo mismo estoy equivocado. Tambi�n me suena que me di� problemas para hacerlo funcionar en OSX.

Si, es bastante complicado, o por lo menos es lo que me pareci� a m� que nunca hab�a programado con objetos.

En cuanto a OSX no te sabr�a decir si funciona o no, no tengo acceso a ninguna m�quina con ese sistema operativo, pero si anda en windows y linux en 32 y 64 bits.

Show quoted text 5 lines
Esta es la idea, que la persistencia ya est� implementada, y de manera transparente. Sabes si crea la BBDD, campos y dem�s cosas necesarias sin tener que tocar nada de SQL?

Hasta ahora siempre us� lazarus database desktop para crear las tablas y las clases. Lo que yo hice es que cada tabla es un objetoy cada campo se corresponde a una propiedad, entonces defin�a las tablas y campos y presionando el bot�n de generar el c�digo ya ten�a las clases armadas.

Hasta ahora lo �nico que hice fueron algunos programitas de prueba muy simples como los que vienen de ejemplo.

Nunca lo prob�, pero parece que tambien se pueden crear las BD y tablas por c�digo, buscando en los ejemplos encontr� esto:

procedure TFormMainCreateDatabase.btnCreateDatabaseClick(Sender:
TObject);
var
  LPerLayer: TtiPersistenceLayer;
begin
LPerLayer:=
GTIOPFManager.PersistenceLayers.FindByPersistenceLayerName(PersistenceLayerName);

Assert(LPerLayernil, '"' + PersistenceLayerName + '" not registered'); LPerLayer.CreateDatabase(DatabaseName, UserName, Password); ShowMessage('Database "' + DatabaseName + '" has been created.');

end;
procedure TFormMainCreateTable.btnCreateTableClick(Sender: TObject);
var
  LTableMetaData: TtiDBMetaDataTable;
begin
  LTableMetaData:= TtiDBMetaDataTable.Create;
  try
    LTableMetaData.Name:= 'Client';
    LTableMetaData.AddField('OID',               qfkString,  36); // Using GUID OIDs
    LTableMetaData.AddField('Client_Name',       qfkString, 200);
    LTableMetaData.AddField('ACN',               qfkString,   9);
    GTIOPFManager.CreateTable(LTableMetaData);
  finally
    LTableMetaData.Free;
  end;
  ShowMessage('Table ''Client'' created');
end;

En el grupo de noticias tiopf.binary hay una adaptaci�n de un art�culo que encontr� en ingl�s que trata de explicar paso a paso como crear clases(Lazarus Database Desktop), unit tests (FPCUnit), crear una interf�z gr�fica (MGM), etc usando tiopf y lazarus. El t�tulo del mensaje es "Paper in spanish - Art�culo en espa�ol".

Reply by email