Ver Mensaje Individual
  #1  
Antiguo 18-02-2014
pape19 pape19 is offline
Miembro
 
Registrado: jul 2010
Posts: 96
Reputación: 14
pape19 Va por buen camino
Programación Orientada a Objetos - Aplicación

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
    { Private declarations }
  public
    { Public declarations }
    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; //IBTable
    dmDatos.transFleetDB.Commit; //IBTransaction
    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.
Responder Con Cita