دلفي تعليم
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

تعريف الواجهة 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
مبرمج مجتهد

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

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

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

- مواضيع مماثلة

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