العودة   منتدى رياض الجنة - 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:16 PM.


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