تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الدرس التاسع والعشرون - IComparable interface
#1
كاتب الموضوع : أحمد جمال

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


هذا هو آخر دروسنا مع ال interfaces الخاصة ، سنتعرف في هذا الدرس على IComparable interface .

كما هو واضح من الاسم ، يستخدم هذا ال interface للمقارنة ، ولذا من الطبيعي ان يكون شكل هذا ال interface بالشكل التالي :


كود :
[FONT=Tahoma]public interface IComparable
{
int CompareTo(object o);
}[/FONT]


vb.net:

كود :
[FONT=Tahoma]Public Interface IComparable
Function CompareTo(ByVal o As Object) As Integer
End Interface [/FONT]


يمكنك ملاحظة ان الدالة تعيد قيمة رقمية ، فعلياً هي تعيد في المعتاد القيم 0 في حالة التساوي ، القيمة 1 في حالة كون الطرف الأول اكبر ، و -1 في حالة كون الطرف الأول أصغر .

طبعاً لا داعي من اعادة تذكيرك بالدرس السابق هنا :
http://vb4arb.com/vb/showthread.php?731
والذي قمنا فيه بمعرفة ان الكائنين يكونان متساويان ليس لاعتبارات تساوي قيمهم الداخلية بل النقطة في اشارتهم لنفس المكان في الذاكرة ، وهو ما لن نحتاجه ، حيث اننا نحتاج لمقارنة فعلية . وهذا ما قمنا به من خلال الدالة equals .

اما النقطة التي لدينا هنا فلسنا بحاجة لمعرفة هل يساوي هذا الكائن ذاك ام لا ، بل نحن في حاجة إلى معرفة ايهما اكبر او اصغر ، ولنفترض تاريخ صنع السيارة ضمن الفئة الخاصة بها .

ببساطة كما قمنا في الدرس السابق ، سنجعل الفئة الخاصة بنا تطبق الفئة IComparable ، ثم نكتب بعض الاكواد في الدالة CompareTo ، لنفترض الشكل التالي مثلاً :
c#:

كود :
[FONT=Tahoma]int IComparable.CompareTo(object obj)
{
Car temp = (Car)obj;
if(this.year > temp.year)
return 1;
if(this.year < temp.year)
return -1;
else
return 0;
}[/FONT]


vb.net:

كود :
[FONT=Tahoma]Private Function CompareTo(ByVal obj As Object) As [/FONT]
[FONT=Tahoma]Integer Implements IComparable.CompareTo
Dim temp As Car = DirectCast(obj, Car)
If Me.year > temp.year Then
Return 1
End If
If Me.year < temp.year Then
Return -1
Else
Return 0
End If
End Function [/FONT]


طبعاً لا داعي لتذكيرك بانك تستطيع اعادة -100 و 0 و 94 بدلاً من -1و0و1 ، لكن هذا لتسهيل المفهوم ، الدالة تعمل بدلالة رقم سالب يعني اصغر ، صفر يعني التساوي ورقم موجب يعني اكبر فقط دون ان يعنيها قيمة هذا الرقم الفعلية .

}}}
تم الشكر بواسطة:


الردود في هذا الموضوع
الدرس التاسع والعشرون - IComparable interface - بواسطة Raggi Tech - 14-10-12, 03:58 PM


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


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