buena pregunta Pablo, ¿cuantas tablas por persona usas? porque siempre tuve esos problemas, sobre todo porque en Delphi tenés el RAD, que me facilita y/o condiciona a hacer ciertas adaptaciones, para aprovechar las facilidades de desarrollo y la OOP.
Uso DataModules o TClientDataSet (o TIBTable etc), depende del caso como el contenedor de Personas. Sería el TPersona al que le agrego otros métodos.
Mi tema es ¿cómo vincula los Data aware a mi clase si no fuera una clase a la que puedo ligar los componentes data aware? un como un datasource por ej, necesito algo del tipo ClientDataSet para asociar a un DataSource necesariamente.
Otra forma que he probado, es crear una clase TPersona (Singleton) que en realidad tenga como atributo, un TClientDataSet (o similares) o TDataModule
Luego ese DataModule o TClientDataSet es una propiedad/atributo de TPersona que paso en el Constructor.
En realidad TPersona, sería como una capa mas arriaba de TClientDataSEt/DataModule, que me permitiría algo mas de abstracción, por si quiero cambiar el motor de bd. Y dejar mas independiente las reglas de negocio. Claro que esto te obliga a escribir algo mas de código.
Luego ese DataModule o TClientDataSet es una propiedad/atributo de TPersona que paso en el Constructor.
En realidad TPersona, sería como una capa mas arriaba de TClientDataSEt/DataModule, que me permitiría algo mas de abstracción, por si quiero cambiar el motor de bd. Y dejar mas independiente las reglas de negocio. Claro que esto te obliga a escribir algo mas de código.
(Tu método procedure GetPersona( nId : Integer ); en realidad lo que hace es buscar en el clientdataset)
Si cambia el motor de BD, la estructura de TPersona casi no cambia, solo los métodos. Y lo que guardes, usando controles data aware, no será algo que pase por tu clase TPersona directamente, sino dependerá de su componente TclientDataSet asociado.
No se si se entendió algo, y de paso espero me corrijan porque no se si es la mejor forma tampoco.
Saludos
Saludos
Rossana
----- Original Message -----From: Pablo ZagniSent: Saturday, July 01, 2006 9:08 AMSubject: [Delphi] Tratando de entender Bussines ObjectsHola amigos
Estoy tratando de llevar a la práctica la teoría de objetos.
Cree una clase persona
TPersona = Class
Private
FNombre : String;
FDireccion : String;
Public
constructor Create;
property Nombre : string read FNombre Write FNombre;
property Direccion : String read FDireccion Write FDireccion;
function Instanciar : Integer;
procedure GetPersona( nId : Integer );
end;
Y desde mi form.. quiero instanciarla y recuperarla...
procedure TForm1.Button1Click(Sender: TObject);
var
p : TPersona;
nId : Integer;
begin
p := TPersona.Create ;
p.Nombre := 'Pepe';
p.Direccion := 'Av. Rivadavia 123';
nId := p.Instanciar ;
p.Nombre := 'Otro nombre';
p.GetPersona( nId );
end;
Estoy pensando bien? es esta la forma de hacerlo?
Si pongo un TDBEdit en mi form, cómo hago para indicarle en design time que ahí quiero el nombre de la persona?
En el boton de Ok del form.. le deberia poner un "p.instanciar" no?
Saludos
Pablo
__________ Información de NOD32, revisión 1.1635 (20060630) __________
Este mensaje ha sido analizado con NOD32 antivirus system
http://www.nod32.com
____________________________________________________ Esa persona especial te espera en Yahoo! Encuentros. ¡Dejate encontrar! http://ar.encuentros.yahoo.com/