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

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

إضافة رد

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

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

نواصل رحلتنا مع ال advanced .net programming ، موعدنا اليوم مع ال Delegates .

قبل ان نشرح تركيبها وكيفية التعامل معها ، سنقوم بشرح لماذا نقوم باستخدامها .

لنفترض عدة دوال تستقبل int وتعيد int ايضاً خاصة بعمليات التحويل ، وهي على الشكل التالي :
C#:
كود PHP:
public int ConvertEGToD(int EG)
       {
           return 
EG 5.45;
       }
       public 
int ConvertRSToD(int RS)
       {
           return 
RS 3.75;
       }
 
       public 
int ConvertEGToRS(int EG)
       {
           return 
EG 1.45;
       }
       public 
int ConvertDToRS(int D)
       {
           return 
3.75;
       }
       public 
int ConvertDToEG(int D)
       {
           return 
5.45;
       }
 
       public 
int ConvertRSToEG(int RS)
       {
           return 
RS 1.45;
       } 
vb.net:
كود PHP:
Public Function ConvertEGToD(ByVal EG As Integer) As Integer 
   
Return EG 5.45 
End 
Function 
Public Function 
ConvertRSToD(ByVal RS As Integer) As Integer 
   
Return RS 3.75 
End 
Function 
 
Public Function 
ConvertEGToRS(ByVal EG As Integer) As Integer 
   
Return EG 1.45 
End 
Function 
Public Function 
ConvertDToRS(ByVal D As Integer) As Integer 
   
Return 3.75 
End 
Function 
Public Function 
ConvertDToEG(ByVal D As Integer) As Integer 
   
Return 5.45 
End 
Function 
 
Public Function 
ConvertRSToEG(ByVal RS As Integer) As Integer 
   
Return RS 1.45 
End 
Function 
كما لاحظت فعلاً ، فهي عدة دوال تستخدم للتحويلات المختلفة بين ثلاث عملات ، الجنية المصري والريال السعودي والدولار الأمريكي .
طبعاً يمكننا عملهم في دالة واحدة وارسال متغير يمثل رقم التحويل ، لكننا لن نستطيع عمل ذلك مثلاً مع دوال اكبر ومختلفة ، لذا فهذا المثال للتوضيح .
الآن في برنامجنا سنقرأ البيانات من المستخدم ، ومن ثم نستخدم جملة شرط if او switch لتحديد اي دالة سنقوم بارسال البيانات إليها ، هذا مختصر للكود المكتوب :
C#:
كود PHP:
            if (Operation == 0)

               
result ConvertDToEG(userInput);
           else if(
Operation == 1)
               
result ConvertRSToD(userInput); 
vb.net:
كود PHP:
If Operation 0 Then

   result 
ConvertDToEG(userInput
ElseIf 
Operation 1 Then 
   result 
ConvertRSToD(userInput
End If 
ولكن لنفترض اننا فقط الآن نود معرفة نوع العملية دون تنفيذها وعرضها للمستخدم حيث سننفذها لاحقاً ، هذا يعني اننا سنقوم بذات الاختبار مرتين ، مرة للعرض على المستخدم ومرة لتنفيذ العملية ، ايضاً ألا تتفق معي في انك قد تحتاج لتنفيذ العملية مرتين في مكانين مختلفين ، وما دمت لا تحتفظ سوى برقم ال Operation إذا ستضطر لعمل جمل الشرط مرة أخرى .

من أجل هذا وجدت ال Delegates ،

Delegetes :

لو اردنا تعريف Delgates لمجموعة دوال ، اول ما نحتاج إليه ان تكون هذه الدوال من نفس عدد البارميترات . ايضاً لها نفس ال input وال output ، لذا سيكون ال Delegate الخاص بدوالنا بالشكل التالي :

C#:
كود PHP:
public delegate int myDelegate(int value); 
vb.net:
كود PHP:
Public Delegate Function myDelegate(ByVal value As Integer) As Integer 
والآن كل ما علي في جملي الشرطية ان احدد لهذا التفويض - إن صحت الترجمة - الدالة المسؤول عنها ، لذا ستكون شروطنا المختصرة بالشكل التالي :
C#:
كود PHP:
if (Operation == 0)

          {
              
myDelegate aDelegate = new myDelegate(ConvertDToEG);
              
result aDelegate(userInput);
          }
          else if (
Operation == 1)
          {
              
myDelegate aDelegate = new myDelegate(ConvertRSToD);
              
result aDelegate(userInput);
          } 
vb.net:
كود PHP:
If Operation 0 Then

  Dim aDelegate 
As New myDelegate(ConvertDToEG
  
result aDelegate(userInput
ElseIf 
Operation 1 Then 
  Dim aDelegate 
As New myDelegate(ConvertRSToD
  
result aDelegate(userInput
End If 
ايضا بامكانك تأخير الشرط الأخير الذي يقوم بتنفيذ ال Delegate للنهاية ، او تكرار استخدامها مرة أخرى ، حيث ان ال aDelegate قد اصبحت تعرف اي دالة تختص بتنفيذ هذه العملية الآن .

لن اتوسع كثيراً في هذا العالم ، هناك الكثير من النقاط في ال Delegates ولكني تجاوزت بعضها لعدم الحاجة المتكررة إليها ، فيما تجاوزت نقاط أخرى لإني لم استطع فهمها بطريقة كاملة تجعلني استطيع شرحها .

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


توقيع : khaledbelal



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

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


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

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

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

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
الدرس الواحد والثلاثون : ال Generic دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 02-25-2010 02:30 PM
الدرس الثاني : نبذه عن برنامج السى شارب 2008 ومكوناته khaledbelal دورة CSharp 2008 من منتديات حور العين الاسلامية 0 02-22-2010 07:12 PM
الدرس الثاني والعشرون : ال polymorphism دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 02-22-2010 01:54 PM
الدرس الثاني عشر : ال Nullable Types دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 02-18-2010 08:07 PM
الدرس الثاني : تقنيات جديدة مع .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 02-15-2010 03:37 AM

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

الساعة الآن 04:58 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