السلام عليكم ورحمة الله وبركاتة
ان كنت من مبتدئ برمجة OOp فدعنى اقل لك ان VB.NET لغة كائنية التوجة Object Oriented Programming بما تحملة هذه الكلمة من معانى ولكـــــــــــن ...
من حيث الغيرة والعنصرية الموجودة بين طوائف المبرمجين ، يتفوق اصحاب قافلة C ++ بعدة خطوات فى هذا السباق من اهم هذه الخطوات الــ MultPle Inheritance وهى بمعنى الوراثة المتعددة وهى قدرة الفئة من وراثة اكثر من فئة بداخلها ...
ولكن يأتى الحل لمداوة مبرمجى VB.NET للتخلص من عقدة النقص والمتمثلة فى ال MultPle Inheritance بواسطة الكلمة السحرية Interfaces
دعنا نقل كلمة حــــق.
الوراثة المتعددة لها عيوب ولذك يتجنبها مبرمجى اللغات التى تدعمها ولكن فوائدها لاتعد ولاتحصى.
الواجهـــات Interfaces هى اكثر أمانا وسهولة من هذا المبدأ ..
أذن دعنا من الكلام النظرى ولننزل الى ارض الواقع ونحتك بالواجهـــات Interfaces
الواجهات Interfaces هى من اهم التقنيات التى تدعم مبادئ ال oop سواء بطريقة غيرة مباشرة كــال Multiple inheritance او بطريقة مباشرة كــا Polymorphism مبدأ تعدد الواجهات.
الواجهات :
هى عبارة عن بعض الخصائص وال Methods التى تصف فئة معينـــــة ( تصــــف ) ...
Class Boris Event Go() Property Job() As String … … End Property Sub DoIt() … … End Sub End Class
الفئة السابقة تحتوى على اعضاء تصفها وهو تطبيق لمبدأ Polymorphism وهو احتواء الفئة لاكثر من واجهة تصفهــا ، يزودك مبدأ Polymorphism بكثير من المميزات والتى ابرزها عدم تكرار اكوادك.
Sub PlayIt(ByVal FileObj As WavFile) … FileObj.Play … End Sub
فى هذا الاجراء التخيلى السابق قمنا بعمل طريقة تقوم بتشغيل ملف
Sub PlayIt(ByVal FileObj As Mp3File) … FileObj.Play … End Sub Sub PlayIt(ByVal FileObj As RmFile) … FileObj.Play … End Sub
وكذلك مع باقى الملفات الصوتية
(( تكـــــــــــــــــــــرار لشفراتك ))..
والتكرار ايضا يشمل عملية استدعاء هذه الاجراءات وكذلك ارسال الوسيطة المطلوبة لكل اجراء مع التحقق منهــا. وتخيل ان اردت اضافة ملف جديد فالتكرار ثم التكرار .
اما مع الوجهـــات Interfaces
واجهة باسم XFile
Sub PlayFile(ByVal FileObj As XFile) … FileObj.Play() … End Sub
الاجراء السابق بامكانة احتواء اى ملف صوتى يحتوى على الواجة XFile
لنرى كيف يتم بناء الواجهــــــــــات ..
استخدم الكلمة المحجوزة Interface ثم اسم الواجهة
لنعرف الواجهة السابقة فى المثال اعلاه ..
Interface XFile Property FileName () as String Public Sub Play End Interface
لاتستخدم كلمات اغلاق ال Bolcks Of Codes لان لاحول لها ولا قوة.
ولا يمكنك تعريف متغير تقليدى بداخلهـــا ( لااعلم ما السبب ) .
ناتى الى استخدام الواجهـــة
Class BorisClass Implements XFile End Class
يجب الاعلان عن جميع اعضاء الواجهة ويقوم vb.net بفعل هذا بدلا منك
Property FileName () as String Get … End Get Set(ByVal Value As String) … End Set End Property Sub PlayFile(ByVal FileObj As XFile) … End Sub End Class
استخدم ال Class بكل اعضاءها اقصد واجهاتهــا فى اى وقت ولاحظ انك تستطيع استعمال اكثر من واجهة فى نفس ال Class (وراثة متعددة)
داخل VB.NET واجهات كثيرة تقريبا كل Class لها واجهة تخصها ابوية اقصد بكلمة ابوية اى ان ترى مثلا الواجهة IDbConnection مسئولة عن الاتصال بقواعد البيانات ( قواعد البيانات اى كانت ) .
واجهات VB.NET كثيرة وعديدة ونستكشفها ان شاء الله فى مواضيع قادمة
والسلام عليكم ورحمة الله وبركاتة.