![]() |
|
الدرس التاسع والعشرون - IComparable interface - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : الأقسام التعليمية - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=90) +--- قسم : قسم دورات المنتدى (http://vb4arb.com/vb/forumdisplay.php?fid=113) +---- قسم : دورة .net 2008 . لنبدأ سوياً (http://vb4arb.com/vb/forumdisplay.php?fid=138) +---- الموضوع : الدرس التاسع والعشرون - IComparable interface (/showthread.php?tid=5623) |
الدرس التاسع والعشرون - IComparable interface - RaggiTech - 14-10-12 كاتب الموضوع : أحمد جمال
بسم الله الرحمن الرحيم .السلام عليكم ورحمة الله وبركاته . هذا هو آخر دروسنا مع ال interfaces الخاصة ، سنتعرف في هذا الدرس على IComparable interface . كما هو واضح من الاسم ، يستخدم هذا ال interface للمقارنة ، ولذا من الطبيعي ان يكون شكل هذا ال interface بالشكل التالي : كود : [FONT=Tahoma]public interface IComparablevb.net: كود : [FONT=Tahoma]Public Interface IComparable يمكنك ملاحظة ان الدالة تعيد قيمة رقمية ، فعلياً هي تعيد في المعتاد القيم 0 في حالة التساوي ، القيمة 1 في حالة كون الطرف الأول اكبر ، و -1 في حالة كون الطرف الأول أصغر . طبعاً لا داعي من اعادة تذكيرك بالدرس السابق هنا : http://vb4arb.com/vb/showthread.php?731 والذي قمنا فيه بمعرفة ان الكائنين يكونان متساويان ليس لاعتبارات تساوي قيمهم الداخلية بل النقطة في اشارتهم لنفس المكان في الذاكرة ، وهو ما لن نحتاجه ، حيث اننا نحتاج لمقارنة فعلية . وهذا ما قمنا به من خلال الدالة equals . اما النقطة التي لدينا هنا فلسنا بحاجة لمعرفة هل يساوي هذا الكائن ذاك ام لا ، بل نحن في حاجة إلى معرفة ايهما اكبر او اصغر ، ولنفترض تاريخ صنع السيارة ضمن الفئة الخاصة بها . ببساطة كما قمنا في الدرس السابق ، سنجعل الفئة الخاصة بنا تطبق الفئة IComparable ، ثم نكتب بعض الاكواد في الدالة CompareTo ، لنفترض الشكل التالي مثلاً : c#: كود : [FONT=Tahoma]int IComparable.CompareTo(object obj)vb.net: كود : [FONT=Tahoma]Private Function CompareTo(ByVal obj As Object) As [/FONT]طبعاً لا داعي لتذكيرك بانك تستطيع اعادة -100 و 0 و 94 بدلاً من -1و0و1 ، لكن هذا لتسهيل المفهوم ، الدالة تعمل بدلالة رقم سالب يعني اصغر ، صفر يعني التساوي ورقم موجب يعني اكبر فقط دون ان يعنيها قيمة هذا الرقم الفعلية . الدرس التاسع والعشرون - IComparable interface - RaggiTech - 14-10-12 الدالة Sort : لنفترض ان لدينا مصفوفة array من الارقام باسم myNumbers ، في هذه الحالة لو قمنا بكتابة الأمر التالي لكان الكود مفهوماً : c#: كود : [FONT=Tahoma]Array.Sort(myNumbers);[/FONT]vb.net: كود : [FONT=Tahoma]Array.Sort(myNumbers)[/FONT]ولكن لو كان لدينا مصفوفة من السيارات ، وكتبنا هذا الكود لترتيبها فإن هذا بالتأكيد سيحدث خطأ . لكن في حالة كون الفئة car تطبق ال IComparable interface ، ففي هذه الحالة سيمكنك استخدام هذا الدالة ببساطة لإنها سوف تقوم بالمقارنة اعتماداً على دالة CompareTo التي قمت انت ببرمجتها ، ربما يكون هذا سبباً كافياً لتقوم بتطبيق هذا ال interface وكتابة كود الدالة بدلاً من كتابة دالة باسم check مثلاً او اي اسم آخر للقيام بنفس المهمة . هذا طبعاً بالاضافة لتسهيل استخدام الفئة الخاصة بكل لاحقاً ووضوحها لأي مبرمج آخر . والله الموفق ... والسلام عليكم ورحمة الله وبركاته . |