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

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

في الانواع الرئيسية لنا ، نستخدم المعاملات المختلفة لتنفيذ عمليات على الفئات المشتقة منها ، فمثلاً المتغير من نوع Integer يفهم المعامل + على انه جمع ، - على انه طرح ... الخ .

ايضاً المتغيرات من نوع String تفهم المتغير + مثلاً على انه لدمج نصين ، وهكذا .

الآن لو قمنا بعمل Structure من نوع Point بالشكل التالي مثلاً :
C#:

كود :
[FONT=Tahoma]public struct Point[/FONT]
[FONT=Tahoma]{[/FONT]
[FONT=Tahoma]private int x, y;[/FONT]
[FONT=Tahoma]public Point(int xPos, int yPos)[/FONT]
[FONT=Tahoma]{[/FONT]
[FONT=Tahoma]x = xPos;[/FONT]
[FONT=Tahoma]y = yPos;[/FONT]
[FONT=Tahoma]}[/FONT]
[FONT=Tahoma]}[/FONT]


vb.net:

كود :
[FONT=Tahoma]Public Structure Point [/FONT]
[FONT=Tahoma]Private x As Integer, y As Integer [/FONT]
[FONT=Tahoma]Public Sub New(ByVal xPos As Integer, ByVal yPos As [/FONT]
[FONT=Tahoma]Integer) [/FONT]
[FONT=Tahoma]x = xPos [/FONT]
[FONT=Tahoma]y = yPos [/FONT]
[FONT=Tahoma]End Sub [/FONT]
[FONT=Tahoma]End Structure[/FONT]

الآن جرب تعريف عدة نقاط ، واستخدام المعامل + او - لجمع وطرح النقاط ، ما تتوقعه ان تشاهد الناتج
عبارة عن طرح ال x في النقطة الثانية من الأولى وكذا ال y ، أو جمعهما معاً ، إلا انك في الواقع لن
تحصل سوى على رسالة خطأ تفيدك بأن structure المسمى Point لا يدعم معاملات الجمع والطرح
.
الآن سنقوم باضافة معاملات جمع وطرح إلى ال structure السابق :
C#:


كود :
[FONT=Tahoma]public struct Point[/FONT]
[FONT=Tahoma]{[/FONT]
[FONT=Tahoma]private int x, y;[/FONT]
[FONT=Tahoma]public Point(int xPos, int yPos)[/FONT]
[FONT=Tahoma]{[/FONT]
[FONT=Tahoma]x = xPos;[/FONT]
[FONT=Tahoma]y = yPos;[/FONT]
[FONT=Tahoma]}[/FONT]

[FONT=Tahoma]public static Point operator + (Point p1, Point p2)[/FONT]
[FONT=Tahoma]{ return new Point(p1.x + p2.x, p1.y + p2.y); }[/FONT]
[FONT=Tahoma]public static Point operator - (Point p1, Point p2)[/FONT]
[FONT=Tahoma]{ return new Point(p1.x - p2.x, p1.y - p2.y); }[/FONT]
[FONT=Tahoma]}[/FONT]

vb.net:

كود :
[FONT=Tahoma]Public Structure Point [/FONT]
[FONT=Tahoma]Private x As Integer, y As Integer [/FONT]
[FONT=Tahoma]Public Sub New(ByVal xPos As Integer, ByVal yPos As [/FONT]
[FONT=Tahoma]Integer) [/FONT]
[FONT=Tahoma]x = xPos [/FONT]
[FONT=Tahoma]y = yPos [/FONT]
[FONT=Tahoma]End Sub [/FONT]



[FONT=Tahoma]Public Shared Operator +(ByVal p1 As Point, ByVal p2 [/FONT]
[FONT=Tahoma]As Point) As Point [/FONT]
[FONT=Tahoma]Return New Point(p1.x + p2.x, p1.y + p2.y) [/FONT]
[FONT=Tahoma]End Operator [/FONT]

[FONT=Tahoma]Public Shared Operator -(ByVal p1 As Point, ByVal p2 [/FONT]
[FONT=Tahoma]As Point) As Point [/FONT]
[FONT=Tahoma]Return New Point(p1.x - p2.x, p1.y - p2.y) [/FONT]
[FONT=Tahoma]End Operator [/FONT]
[FONT=Tahoma]End Structure [/FONT]


الآن يمكنك كتابة كود بالشكل التالي :

كود :
[FONT=Tahoma]Point p3 = p1 + p2;[/FONT]

ستحصل على النتيجة الصحيحة لعملية جمع ال Points .


ايضا يمكنك كتابة كود كالتالي مباشرة :


كود :
[FONT=Tahoma]p2-=p1;[/FONT]

آخر ما سنتعرف عليه في هذا الجزء من الدرس ، انك لن تكون قادراً سوى على تعريف Static function من اجل عمل overloading لأي معامل .

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


الردود في هذا الموضوع
الدرس الثالث والأربعون - Operator Overloading - بواسطة Raggi Tech - 14-10-12, 04:35 PM


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


يقوم بقرائة الموضوع: