Buenas tardes.
A algunos mi consulta les parecerá algo tonta, pero es algo que me está costando implementar en Delphi y necesito de su ayuda.
Las aplicaciones que he hecho en Delphi, sean simples o con alguna complejidad fue siempre programando de manera procedural, nunca cree una clase; y ahora necesito y siento curiosidad por aplicar todos mis conocimientos teóricos aprendidos de POO en la práctica, y tengo ciertas dudas del orden en el que se escriben las cosas.
Vamos a suponer, que mi aplicación es un ABM de Empleados, con una base de datos Firebird. Para conexion con la bd utilizo componentes IB. Creo la siguiente clase:
Código Delphi
[-]
TEmpleado = class
Referencia: Integer;
Nombre: String;
FechaNacimiento: TDate;
Procedure ValidarEmpleado(objEmpleado : TEmpleado);
Procedure GuardarEmpleado(objEmpleado : TEmpleado);
private
public
Procedure SetReferencia(IdEmpleado: Integer);
Procedure SetNombre(Nombre: String);
Procedure SetFechaNacimiento(FechaNacimiento: TDate);
Function GetReferencia(): Integer;
Function GetNombre(): String;
Function GetFechaNacimiento(): TDate;
Luego tengo un form(F_Empleados) con tres botones(alta, baja y modificación de empleados) y un DataModule(Name dmDatos) con un objeto IBTable, llamado tblEmpleados. El boton Alta:
Código Delphi
[-]procedure TF_Empleados.btnAltaClick(Sender: TObject);
begin
Empleado := TEmpleado.Create();
TblEmpleados.Active := True;
TblEmpleados.Insert;
F_ABMEmpleado.show;
end;
F_ABMEmpleado es otro form, el cual muestro al apretar Alta, donde tengo 3 Edits para el ingreso de los datos del empleado. Y un botón Guardar.
En ese botón guardar hago...
Código Delphi
[-]
Empleado.SetReferencia(Edit1.Text);
Empleado.SetNombre(Edit2.Text);
Empleado.SetFechaNacimiento(Edit3.Text);
Empleado.ValidarEmpleado(Empleado);
Empleado.GuardarEmpleado(Empleado);
F_ABMEmpleado.Close;
Ahora les muestro mis métodos ValidarEmpleado() y GuardarEmpleado() de la clase Empleado
Código Delphi
[-]Procedure TEmpleado.ValidarEmpleado(objEmpleado : TEmpleado);
Begin
if ((objEMpleado.Nombre = '') then
Begin
showmessage('ERROR');
abort;
End;
End;
Procedure TEmpleado.GuardarEmpleado(objEmpleado : TEmpleado);
Begin
dmDatos.tblEmpleadosREFERENCIA.Value := objEmpleado.Referencia;
dmDatos.tblEmpleadosNOMBRE.Value := objEmpleado.Nombre;
dmDatos.tblEmpleadosFECHA_NAC.Value := objEmpleado.FechaNacimiento;
dmDatos.tblEmpleados.Post; dmDatos.transFleetDB.Commit; dmDatos.tblEmpleados.Active := False;
End;
El código funciona. Ahora bien...es la manera correcta de hacerlo????? En el método GuardarEmpleado de la clase Empleado, defino tblEmpleados.... para pasar los datos a la base, por lo cual, esta clase no sirve para otra aplicación donde se necesite una clase Empleado; esto ultimo es lo que me hace dudar de si está bien escrito o no. Que consejos pueden darme??
Disculpen las "pifias" que pude haber tenido en la explicación. Muchas gracias.