تعريف الواجهة interface في دلفي

اذهب الى الأسفل

تعريف الواجهة  interface في دلفي Empty تعريف الواجهة interface في دلفي

مُساهمة  djelal في 8/9/2019, 8:04 pm

تعريف الواجهة interface في دلفي

تعريف العام للواجهة يكون هكذا:
IPersonFace = interface
['{الرقم الخاص بكل واجهة}']
الحقول غير مسموح بها
مجموع مناهج وخصائص الواجهة هنا
end;
---
الوراثة:
ترث كل واجهة واجهة اخرى وواجدة فقط
IPersonFace2 = interface(IPersonFace)
لرقم الخاص بكل واجهة اختياري
الحقول غير مسموح بها
مجموع مناهج وخصائص الواجهة هنا
end;
مثال:
-----------------------

الكود:

unit ntInterface1;

interface
{}
type
{
هذه الفئة class اسمها TPerson2 تشبه الواجهة interface الى حد ما
}
TPerson2 = class
private
fNom, fPrenom, fAge: string;
function GetNom: string; virtual; abstract;
function GetPrenom: string; virtual; abstract;
function GetAge: integer; virtual; abstract;
procedure SetNom(aNom: string); virtual; abstract;
procedure SetPrenom(aPrenom: string); virtual; abstract;
procedure SetAge(aAge: integer); virtual; abstract;
public
property Nom: string read GetNom write SetNom;
property Prenom: string read GetPrenom write SetPrenom;
property Age: integer read GetAge write SetAge;
end;
{
تعريف الواجهة interface
الواجهة عبارة عن رؤوس المناهج فقط و الخصائص
ويتم اعادة تعريف المناهج في الفئة التي تستعمل الواجهة دون اعادة تعريف الخصائص
}
IPersonFace = interface
/// ضغط فوق ثلاث مفاتيح Ctrl+Shift+G لاظهار الكود التالي
['{B99921E3-A5BA-4D98-BE7F-5B5336521748}']
/// لا يمكن للواجهة interface ان تحوي داخلها حقول
//fNom, fPrenom, fAge: string; // Error
function GetNom: string;
function GetPrenom: string;
function GetAge: integer;
procedure SetNom(aNom: string);
procedure SetPrenom(aPrenom: string);
procedure SetAge(aAge: integer);
property Nom: string read GetNom write SetNom;
property Prenom: string read GetPrenom write SetPrenom;
property Age: integer read GetAge write SetAge;
end;
{
هذه الواجهة IPersonFace2 ترث كل مناهج وخصائص الواجهة IPersonFace
}
IPersonFace2 = interface(IPersonFace)
/// ضغط فوق ثلاث مفاتيح Ctrl+Shift+G لاظهار الكود التالي
/// لاتستعمل هذا الرقم استعمل الرقم الخاص بك بالضغط فوق المفاتيح ثلاث
/// Ctrl+Shift+G
/// أو بدون رقم لانه اختياري فقط
['{AF152544-1900-4999-944D-5BDD7DE1DCB7}']
function GetAdresse: string;
function GetLiue: string;
procedure SetAdresse(aAdresse: string);
procedure SetLiue(aLiue: string);
property Adresse: string read GetAdresse write SetAdresse;
property Liue: string read GetLiue write SetLiue;
end;
{
يمكن للفئة class ان تمثل اكثر من واجهة واحد مثلا:
TPersons = class(TInterfacedObject, IPersonFace, IPersonFace2)

}
TPerson = class(TInterfacedObject, IPersonFace2)
private
fNom, fPrenom: string;
fAge: integer;
fAdresse, fLiue: string;
protected
function GetNom: string;
function GetPrenom: string;
function GetAge: integer;
procedure SetNom(aNom: string);
procedure SetPrenom(aPrenom: string);
procedure SetAge(aAge: integer);
function GetAdresse: string;
function GetLiue: string;
procedure SetAdresse(aAdresse: string);
procedure SetLiue(aLiue: string);
end;

implementation

function TPerson.GetAdresse: string;
begin
Result := fAdresse;
end;

function TPerson.GetAge: integer;
begin
Result := fAge;
end;

function TPerson.GetLiue: string;
begin
Result := fLiue;
end;

function TPerson.GetNom: string;
begin
Result := fNom;
end;

function TPerson.GetPrenom: string;
begin
Result := fPrenom;
end;

procedure TPerson.SetAdresse(aAdresse: string);
begin
fAdresse := aAdresse;
end;

procedure TPerson.SetAge(aAge: integer);
begin
fAge := aAge;
end;

procedure TPerson.SetLiue(aLiue: string);
begin
fLiue := aLiue;
end;

procedure TPerson.SetNom(aNom: string);
begin
fNom := aNom;
end;

procedure TPerson.SetPrenom(aPrenom: string);
begin
fPrenom := aPrenom;
end;

end.

/////////////////////////////

الكود:

procedure TForm1.Button1Click(Sender: TObject);
var
Person: IPersonFace2;
begin
Person := TPerson.Create;
Person.Nom := 'ali';
Person.Prenom := 'sabr';
Person.Age := 61;
Person.Adresse := 'Alger';
Person.Liue := 'in Alger';
/////
with Person do
begin
Caption := Nom+' '+Prenom+' '+IntToStr(Age)+' '+
Adresse+' '+Liue;
end;
end;

djelal
مبرمج

عدد المساهمات : 88
تاريخ التسجيل : 29/04/2015

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى