العودة   منتدى رياض الجنة - Riad Al-Ganah > الرياض التقنية > روضة الكورسات والدورات التقنية والعلمية > روضة دورات تقنية الـ .NET بلغاتها المختلفة > دورة .NET 2008 من منتدى فيجوال بيسك للعرب

دورة .NET 2008 من منتدى فيجوال بيسك للعرب مقدم الدورة : أحمد جمال ، نوع الدورة : كتابية مصحوبة بصور ، حالة الدورة : انتهت ، عدد الدروس : 80 درس . مستوى الدورة : من البداية للاحتراف .

إضافة رد

 
أدوات الموضوع انواع عرض الموضوع
  #1  
قديم 02-26-2010, 04:22 PM
الصورة الرمزية khaledbelal
khaledbelal khaledbelal غير متواجد حالياً
مبرمج المنتدى
الادارة تكليف لا تشريف
 
تاريخ التسجيل: Oct 2009
العمر: 34
المشاركات: 3,606
افتراضي الدرس الثالث والأربعون : Operator Overloading دورة .net 2008

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

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

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

الآن لو قمنا بعمل Structure من نوع Point بالشكل التالي مثلاً :
C#:
كود PHP:
public struct Point
{
private 
int xy;
public 
Point(int xPosint yPos)
{
xPos;
yPos;
}

vb.net:
كود PHP:
Public Structure Point 
  
Private As IntegerAs Integer 
  
Public Sub New(ByVal xPos As IntegerByVal yPos As 
Integer
      
xPos 
      y 
yPos 
  End Sub 
End Structure 
الآن جرب تعريف عدة نقاط ، واستخدام المعامل + او - لجمع وطرح النقاط ، ما تتوقعه ان تشاهد الناتج
عبارة عن طرح ال x في النقطة الثانية من الأولى وكذا ال y ، أو جمعهما معاً ، إلا انك في الواقع لن
تحصل سوى على رسالة خطأ تفيدك بأن structure المسمى Point لا يدعم معاملات الجمع والطرح
.
الآن سنقوم باضافة معاملات جمع وطرح إلى ال structure السابق :

C#:
كود PHP:
public struct Point
{
private 
int xy;
public 
Point(int xPosint yPos)
{
xPos;
yPos;
}
 
public static 
Point operator + (Point p1Point p2)
{ return new 
Point(p1.p2.xp1.p2.y); }
public static 
Point operator - (Point p1Point p2)
{ return new 
Point(p1.p2.xp1.p2.y); }

vb.net:
كود PHP:
Public Structure Point 
  
Private As IntegerAs Integer 
  
Public Sub New(ByVal xPos As IntegerByVal yPos As 
Integer
      
xPos 
      y 
yPos 
  End Sub 
 
 
  
Public Shared Operator +(ByVal p1 As PointByVal p2 
As Point) As Point 
      
Return New Point(p1.p2.xp1.p2.y
  
End Operator 
 
  
Public Shared Operator -(ByVal p1 As PointByVal p2 
As Point) As Point 
      
Return New Point(p1.p2.xp1.p2.y
  
End Operator 
End Structure 
الآن يمكنك كتابة كود بالشكل التالي :
كود PHP:
Point p3 p1 p2
ستحصل على النتيجة الصحيحة لعملية جمع ال Points .

ايضا يمكنك كتابة كود كالتالي مباشرة :
كود PHP:
p2-=p1
آخر ما سنتعرف عليه في هذا الجزء من الدرس ، انك لن تكون قادراً سوى على تعريف Static function من اجل عمل overloading لأي معامل .

ليست معاملات الجمع والطرح فقط من يمكن عمل overloading ، بل يمكنك عمل ذلك لأي نوع من المعاملات ، فمثلاً ++ و -- في السي شارب فقط :
كود PHP:
public static Point operator ++(Point p1)
{ return new 
Point(p1.x+1p1.y+1); }
public static 
Point operator --(Point p1)
{ return new 
Point(p1.x-1p1.y-1); } 
نفس الأمر بالنسبة لدوال المساواة وعمل == أو != حقيقية مثل ما تعلمنا سابقاً مع عمل overridding للدالة Equals ، سنعتمد هنا على هذه الدالة بالشكل التالي :

C#:

كود PHP:
public override bool Equals(object o)
{
return 
o.ToString() == this.ToString();
}
public static 
bool operator ==(Point p1Point p2)
{ return 
p1.Equals(p2); }
public static 
bool operator !=(Point p1Point p2)
{ return !
p1.Equals(p2); } 
vb.net:
كود PHP:
Public Overloads Overrides Function Equals(ByVal o As Object) As Boolean 
    
Return o.ToString() = Me.ToString() 
End Function 
Public 
Shared Operator =(ByVal p1 As PointByVal p2 As Point) As Boolean 
    
    
    
Return p1.Equals(p2
End Operator 
Public Shared Operator <>(ByVal p1 As PointByVal p2 As Point) As Boolean 
    
    
Return Not p1.Equals(p2
End Operator 
وهكذا تجد ان بامكانك عمل overloading لأي من هذه المعاملات :



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


توقيع : khaledbelal



(أَفَأَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا بَيَاتاً وَهُمْ نَآئِمُونَ {97} أَوَ أَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا ضُحًى وَهُمْ يَلْعَبُونَ {98}
أَفَأَمِنُواْ مَكْرَ اللّهِ فَلاَ يَأْمَنُ مَكْرَ اللّهِ إِلاَّ الْقَوْمُ الْخَاسِرُونَ {99}).
سورة الأعراف.

رد مع اقتباس
إضافة رد


تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

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

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
الدرس السادس عشر : ال OverLoading دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 1 03-02-2011 03:43 PM
الدرس الثاني والأربعون : ال Gc دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 02-26-2010 04:17 PM
الدرس الواحد والأربعون : Partial Methods دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 02-26-2010 04:14 PM
الدرس الثالث والثلاثون : ال Events دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 02-25-2010 02:40 PM
الدرس الثالث والعشرون : ال Abstract دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 02-22-2010 01:57 PM

استضافة الحياة

الساعة الآن 12:21 AM.


Powered by vBulletin® v3.8.4, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. , TranZ By Almuhajir
النسخة الفضية
Ads Management Version 3.0.1 by Saeed Al-Atwi

SlamDesignzslamDesignzEdited by Riad Al-Ganah Team - جميع الحقوق محفوظة لشبكة رياض الجنة

Privacy Policy Valid XHTML 1.0 Transitional By SlamDesignz Valid CSS Transitional By SlamDesignz