تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
The Interfaces
#1
كاتب الموضوع : !!! BoriS !!!

السلام عليكم ورحمة الله وبركاتة

ان كنت من مبتدئ برمجة OOp فدعنى اقل لك ان VB.NET لغة كائنية التوجة Object Oriented Programming بما تحملة هذه الكلمة من معانى ولكـــــــــــن ...

من حيث الغيرة والعنصرية الموجودة بين طوائف المبرمجين ، يتفوق اصحاب قافلة C ++ بعدة خطوات فى هذا السباق من اهم هذه الخطوات الــ MultPle Inheritance وهى بمعنى الوراثة المتعددة وهى قدرة الفئة من وراثة اكثر من فئة بداخلها ...

ولكن يأتى الحل لمداوة مبرمجى VB.NET للتخلص من عقدة النقص والمتمثلة فى ال MultPle Inheritance بواسطة الكلمة السحرية Interfaces

دعنا نقل كلمة حــــق.

الوراثة المتعددة لها عيوب ولذك يتجنبها مبرمجى اللغات التى تدعمها ولكن فوائدها لاتعد ولاتحصى.

الواجهـــات Interfaces هى اكثر أمانا وسهولة من هذا المبدأ ..

أذن دعنا من الكلام النظرى ولننزل الى ارض الواقع ونحتك بالواجهـــات Interfaces

الواجهات Interfaces هى من اهم التقنيات التى تدعم مبادئ ال oop سواء بطريقة غيرة مباشرة كــال Multiple inheritance او بطريقة مباشرة كــا Polymorphism مبدأ تعدد الواجهات.

الواجهات :

هى عبارة عن بعض الخصائص وال Methods التى تصف فئة معينـــــة ( تصــــف ) ...


كود :
[color=#000000][COLOR=#007700]Class [/color][COLOR=#0000bb]Boris
Event Go[/COLOR][COLOR=#007700]()
[/COLOR][color=#0000bb]Property Job[/color][color=#007700]() As [/color][COLOR=#0000bb]String


End Property
Sub DoIt[/COLOR][COLOR=#007700]()
[/COLOR][COLOR=#0000bb]…

End Sub
End [/COLOR][COLOR=#007700]Class  
[/COLOR][/COLOR]

الفئة السابقة تحتوى على اعضاء تصفها وهو تطبيق لمبدأ Polymorphism وهو احتواء الفئة لاكثر من واجهة تصفهــا ، يزودك مبدأ Polymorphism بكثير من المميزات والتى ابرزها عدم تكرار اكوادك.


كود :
[color=#000000][COLOR=#0000bb]Sub PlayIt[/color][color=#007700]([/color][color=#0000bb]ByVal FileObj [/color][color=#007700]As [/color][color=#0000bb]WavFile[/color][COLOR=#007700])
[/COLOR][COLOR=#0000bb]…
FileObj[/COLOR][color=#007700].[/color][COLOR=#0000bb]Play

End Sub
فى هذا الاجراء التخيلى السابق قمنا بعمل طريقة تقوم بتشغيل ملف  

Sub PlayIt[/COLOR][color=#007700]([/color][color=#0000bb]ByVal FileObj [/color][color=#007700]As [/color][color=#0000bb]Mp3File[/color][COLOR=#007700])
[/COLOR][COLOR=#0000bb]…
FileObj[/COLOR][color=#007700].[/color][COLOR=#0000bb]Play

End Sub

Sub PlayIt[/COLOR][color=#007700]([/color][color=#0000bb]ByVal FileObj [/color][color=#007700]As [/color][color=#0000bb]RmFile[/color][COLOR=#007700])
[/COLOR][COLOR=#0000bb]…
FileObj[/COLOR][color=#007700].[/color][COLOR=#0000bb]Play

End Sub  
[/COLOR][/COLOR]

وكذلك مع باقى الملفات الصوتية

(( تكـــــــــــــــــــــرار لشفراتك ))..

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

اما مع الوجهـــات Interfaces

واجهة باسم XFile


كود :
[color=#000000][COLOR=#0000bb]Sub PlayFile[/color][color=#007700]([/color][color=#0000bb]ByVal FileObj [/color][color=#007700]As [/color][color=#0000bb]XFile[/color][COLOR=#007700])
[/COLOR][COLOR=#0000bb]…
FileObj[/COLOR][color=#007700].[/color][color=#0000bb]Play[/color][COLOR=#007700]()
[/COLOR][COLOR=#0000bb]…
End Sub  
[/COLOR][/COLOR]


الاجراء السابق بامكانة احتواء اى ملف صوتى يحتوى على الواجة XFile

لنرى كيف يتم بناء الواجهــــــــــات ..

استخدم الكلمة المحجوزة Interface ثم اسم الواجهة

لنعرف الواجهة السابقة فى المثال اعلاه ..


كود :
[color=#000000][COLOR=#007700]Interface [/color][COLOR=#0000bb]XFile  

Property FileName [/COLOR][color=#007700]() as [/color][COLOR=#0000bb]String

[/COLOR][color=#007700]Public [/color][COLOR=#0000bb]Sub Play

End [/COLOR][COLOR=#007700]Interface  
[/COLOR][/COLOR]

لاتستخدم كلمات اغلاق ال Bolcks الى تم عملها لان لاحول لها ولا قوة.

ولا يمكنك تعريف متغير تقليدى بداخلهـــا ( لااعلم ما السبب ) .

ناتى الى استخدام الواجهـــة


كود :
[color=#000000][COLOR=#007700]Class [/color][COLOR=#0000bb]BorisClass

[/COLOR][color=#007700]Implements [/color][COLOR=#0000bb]XFile

End [/COLOR][COLOR=#007700]Class  
[/COLOR][/COLOR]

يجب الاعلان عن جميع اعضاء الواجهة ويقوم vb.net بفعل هذا بدلا منك


كود :
[color=#000000][COLOR=#0000bb]Property FileName [/color][color=#007700]() as [/color][COLOR=#0000bb]String

Get

End Get
Set[/COLOR][color=#007700]([/color][color=#0000bb]ByVal Value [/color][color=#007700]As [/color][color=#0000bb]String[/color][COLOR=#007700])
[/COLOR][COLOR=#0000bb]…
End Set
End Property

Sub PlayFile[/COLOR][color=#007700]([/color][color=#0000bb]ByVal FileObj [/color][color=#007700]As [/color][color=#0000bb]XFile[/color][COLOR=#007700])
[/COLOR][COLOR=#0000bb]…

End Sub  


End [/COLOR][COLOR=#007700]Class  
[/COLOR][/COLOR]

استخدم ال Class بكل اعضاءها اقصد واجهاتهــا فى اى وقت ولاحظ انك تستطيع استعمال اكثر من واجهة فى نفس ال Class (وراثة متعددة)

داخل VB.NET واجهات كثيرة تقريبا كل Class لها واجهة تخصها ابوية اقصد بكلمة ابوية اى ان ترى مثلا الواجهة IDbConnection مسئولة عن الاتصال بقواعد البيانات ( قواعد البيانات اى كانت ) .

واجهات VB.NET كثيرة وعديدة ونستكشفها ان شاء الله فى مواضيع قادمة

والسلام عليكم ورحمة الله وبركاتة.
}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  الجزء الثاني - تطوير الكونترول Interfaces RaggiTech 0 2,261 06-10-12, 12:19 AM
آخر رد: RaggiTech
  الواجهات Interfaces RaggiTech 0 1,962 03-10-12, 01:01 AM
آخر رد: RaggiTech
  Using Generics with Interfaces RaggiTech 0 1,731 01-10-12, 07:47 PM
آخر رد: RaggiTech

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


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