هل هذه الطريقة سليمة من الناحية المنطقية و البرمجية
#1
السلام عليكم، مرحبا بالجميع.

هل هذه الطريقة سليمة من الناحية المنطقية و البرمجية
وبماذا تنصحون
وفي الاخير تقبلوا شكري الجزيل

كود :
[align=left]nit Unit1;[/align] [align=left]interface[/align] [align=left]uses[/align] [align=left]  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,[/align] [align=left]  Dialogs, StdCtrls, ComCtrls, Unit2,DateUtils;[/align] [align=left]type[/align] [align=left]  TForm1 = class(TForm)[/align] [align=left]    Button1: TButton;[/align] [align=left]    Edit1: TEdit;[/align] [align=left]    DateTimePicker1: TDateTimePicker;[/align] [align=left]    Label1: TLabel;[/align] [align=left]    Label2: TLabel;[/align] [align=left]    Edit2: TEdit;[/align] [align=left]    Label3: TLabel;[/align] [align=left]    Button2: TButton;[/align] [align=left]    procedure Button1Click(Sender: TObject);[/align] [align=left]    procedure Button2Click(Sender: TObject);[/align] [align=left]  end;[/align] [align=left]  TEnterEmployee = class(Tds)[/align] [align=left]  private[/align] [align=left]   fDateE: TDate;[/align] [align=left]   procedure SetLDate(ALDate: TDate); override;[/align] [align=left]   function GetLDate: TDate; override;[/align] [align=left]  end;[/align] [align=left]  TSortieEmployee = class(Tds)[/align] [align=left]  private[/align] [align=left]   fDateS: TDate;[/align] [align=left]   procedure SetLDate(ALDate: TDate); override;[/align] [align=left]   function GetLDate: TDate; override;[/align] [align=left]  end;[/align] [align=left]var[/align] [align=left]  Form1: TForm1;[/align] [align=left]implementation[/align] [align=left]{$R *.dfm}[/align] [align=left]procedure TForm1.Button1Click(Sender: TObject);[/align] [align=left]var[/align] [align=left] d1: Tds;[/align] [align=left]begin[/align] [align=left] d1:= TEnterEmployee.Create;[/align] [align=left] try[/align] [align=left]   d1.NameFirst := Edit1.Text;[/align] [align=left]   d1.NameLast := Edit2.Text;[/align] [align=left]   d1.LDate := DateTimePicker1.Date;[/align] [align=left]   //[/align] [align=left]   Label1.Caption := d1.NameFirst;[/align] [align=left]   Label2.Caption := d1.NameLast;[/align] [align=left]   Label3.Caption := DateToStr(d1.LDate);[/align] [align=left] finally[/align] [align=left]  d1.Free[/align] [align=left] end;[/align] [align=left]end;[/align] [align=left]procedure TForm1.Button2Click(Sender: TObject);[/align] [align=left]var[/align] [align=left] d1: Tds;[/align] [align=left]begin[/align] [align=left] d1:= TSortieEmployee.Create;[/align] [align=left] try[/align] [align=left]   d1.NameFirst := Label1.Caption;[/align] [align=left]   d1.NameLast := Label2.Caption;[/align] [align=left]   d1.LDate := StrToDate(Label3.Caption);[/align] [align=left]   //[/align] [align=left]   Edit1.Text := d1.NameFirst;[/align] [align=left]   Edit2.Text := d1.NameLast;[/align] [align=left]   DateTimePicker1.Date := d1.LDate;[/align] [align=left] finally[/align] [align=left]  d1.Free[/align] [align=left] end;[/align] [align=left]end;[/align] [align=left]function TEnterEmployee.GetLDate: TDate;[/align] [align=left]begin[/align] [align=left]  Result := fDateE[/align] [align=left]end;[/align] [align=left]procedure TEnterEmployee.SetLDate(ALDate: TDate);[/align] [align=left]begin[/align] [align=left] if YearOf(Now)-YearOf(ALDate)>17 then[/align] [align=left]   fDateE := ALDate;[/align] [align=left]end;[/align] [align=left]function TSortieEmployee.GetLDate: TDate;[/align] [align=left]begin[/align] [align=left]  Result := fDateS[/align] [align=left]end;[/align] [align=left]procedure TSortieEmployee.SetLDate(ALDate: TDate);[/align] [align=left]begin[/align] [align=left]  fDateS := ALDate[/align] [align=left]end;[/align] [align=left]end.[/align] [align=left]-----------[/align] [align=left]unit Unit2;[/align] [align=left]interface[/align] [align=left]uses Controls;[/align] [align=left]type[/align] [align=left]  Tds = class[/align] [align=left]  protected[/align] [align=left]   fNameFirst,fNameLast: string;[/align] [align=left]   procedure SetLDate(ALDate: TDate); virtual; abstract;[/align] [align=left]   function GetLDate: TDate; virtual; abstract;[/align] [align=left]  public[/align] [align=left]   property NameFirst: string read fNameFirst write fNameFirst;[/align] [align=left]   property NameLast: string read fNameLast write fNameLast;[/align] [align=left]   property LDate: TDate read GetLDate write SetLDate;[/align] [align=left]  end;[/align] [align=left]implementation[/align] [align=left]end.[/align]

كود :
nit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, StdCtrls, ComCtrls, Unit2,DateUtils; type   TForm1 = class(TForm)     Button1: TButton;     Edit1: TEdit;     DateTimePicker1: TDateTimePicker;     Label1: TLabel;     Label2: TLabel;     Edit2: TEdit;     Label3: TLabel;     Button2: TButton;     procedure Button1Click(Sender: TObject);     procedure Button2Click(Sender: TObject);   end;   TEnterEmployee = class(Tds)   private    fDateE: TDate;    procedure SetLDate(ALDate: TDate); override;    function GetLDate: TDate; override;   end;   TSortieEmployee = class(Tds)   private    fDateS: TDate;    procedure SetLDate(ALDate: TDate); override;    function GetLDate: TDate; override;   end; var   Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var  d1: Tds; begin  d1:= TEnterEmployee.Create;  try    d1.NameFirst := Edit1.Text;    d1.NameLast := Edit2.Text;    d1.LDate := DateTimePicker1.Date;    //    Label1.Caption := d1.NameFirst;    Label2.Caption := d1.NameLast;    Label3.Caption := DateToStr(d1.LDate);  finally   d1.Free  end; end; procedure TForm1.Button2Click(Sender: TObject); var  d1: Tds; begin  d1:= TSortieEmployee.Create;  try    d1.NameFirst := Label1.Caption;    d1.NameLast := Label2.Caption;    d1.LDate := StrToDate(Label3.Caption);    //    Edit1.Text := d1.NameFirst;    Edit2.Text := d1.NameLast;    DateTimePicker1.Date := d1.LDate;  finally   d1.Free  end; end; function TEnterEmployee.GetLDate: TDate; begin   Result := fDateE end; procedure TEnterEmployee.SetLDate(ALDate: TDate); begin  if YearOf(Now)-YearOf(ALDate)>17 then    fDateE := ALDate; end; function TSortieEmployee.GetLDate: TDate; begin   Result := fDateS end; procedure TSortieEmployee.SetLDate(ALDate: TDate); begin   fDateS := ALDate end; end.


كود :
unit Unit2; interface uses Controls; type   Tds = class   protected    fNameFirst,fNameLast: string;    procedure SetLDate(ALDate: TDate); virtual; abstract;    function GetLDate: TDate; virtual; abstract;   public    property NameFirst: string read fNameFirst write fNameFirst;    property NameLast: string read fNameLast write fNameLast;    property LDate: TDate read GetLDate write SetLDate;   end; implementation end.
الرد


الردود في هذا الموضوع
هل هذه الطريقة سليمة من الناحية المنطقية و البرمجية - بواسطة sabre - 13-05-2019, 01:28 PM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم