01-10-12, 06:53 PM
كاتب الموضوع : !!! 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 كثيرة وعديدة ونستكشفها ان شاء الله فى مواضيع قادمة
والسلام عليكم ورحمة الله وبركاتة.