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

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

إضافة رد

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

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

تعريف ال Interface :
ال interface هو abstract class يحتوي على abstract mehods and members يمكن عمل نسخة منه باستخدام بمفهوم implementation بدلاً من inhiritancae ، كما يتميز بامكانية عمل implement لاكثر من interface في المرة الواحدة وهو البديل عن مفهوم multiple inhiritance .

يمكن تعريف interface بالشكل التالي مثلاً :

C#:

كود PHP:
public interface ICar
{
int carMaxSpeed{get;set;}
void AddItem(string Item);

vb.net:

كود PHP:
Public Interface ICar 
    Property carMaxSpeed
() As Integer 
    Sub AddItem
(ByVal Item As String
 
End Interface 
لا تنسى ان بامكانك اشتقاق interface من آخر بالشكل التالي مثلاً :

C#:

كود PHP:
public interface ICar:IDisposable
{
int carMaxSpeed{get;set;}
void AddItem(string Item);

VB.net:
كود PHP:
Public Interface ICar 
    Inherits IDisposable 
    Property carMaxSpeed
() As Integer 
    Sub AddItem
(ByVal Item As String
End Interface 
ولعمل implements لاي interface نقوم بكتابة الكود التالي :

C#:
كود PHP:
public class BMW Car 

 

 
public class 
BMW2 CarTruck 

 

VB.net:

كود PHP:
Public Class BMW 
    
Implements Car 
 
End 
Class 
 
Public Class 
BMW2 
    
Implements CarTruck
 
End 
Class 
الآن يمكنك اعادة كتابة الدوال الموجودة . اضافة دوال جديدة ، ومن ثم استخدام الفئة كما قمنا بذلك قبلاً .

don't do with interface :

- بداية ، ال Interface لا يمكن عمل اي Object منه .
لذا فمثل هذه الجملة خاطئة :

C#:
كود PHP:
ICar x=new ICar(); 
vb.net:
كود PHP:
Dim x As New ICar() 
- لا يمكن تعريف متغير عادي في ال interface ، لذا مثل هذه الجملة داخل ال interface خاطئة :

c#:
كود PHP:
int number
vb.net:
كود PHP:
Dim number as integer 
البديل ، هو عمل خاصية set و get بالشكل التالي :

C#:
كود PHP:
 
int x 
{set;get;} 
vb.net:
كود PHP:
Private Property x() As Integer 
    Get 
    End Get 
    Set 
    End Set 
End Property 
- بالطبع لا يمكنك كتابة أي سطر كود داخل ال interface .
- كما لا يمكن عمل constructor لل interface .

Name Clashes

احياناً ما يقوم class او struct ما بعمل implements لاكثر من interface ، وربما يحدث مشاكل في تشابه الأسماء ، لنفترض المثال التالي :

C#:
كود PHP:
public interface ICar
{
void move();
}
public interface 
ITruck
{
void move();
}
public class 
BMWITruckICar
{

vb.net:
كود PHP:
Public Interface ICar 
    Sub move
() 
End Interface 
Public Interface 
ITruck 
    Sub move
() 
End Interface 
Public Class 
BMW 
    
Implements ITruck 
    
Implements ICar 
    
End 
Class 
ربما لن تجد مشكلة فيما لو قمت بعمل implementation للدالة move في الكلاس الجديد BMW :

C#:
كود PHP:
public class BMWITruckICar
{
void move()
{
// do something.
}

vb.net:

كود PHP:
Public Class BMW 
    
Implements ITruck 
    
Implements ICar 
    
    
Private Sub move() 
        
' do something. 
    End Sub 
End Class 
ولكن ماذا لو أردت عمل implementation للدالة move من car واخرى للدالة move من truck ، نقوم بذلك بالشكل التالي :

C#:
كود PHP:
public class BMWITruckICar
{
void ICar.move()
{
// do something.
}
void ITruck.move()
{
// do something.
}

vb.net:
كود PHP:
public class BMWITruckICar
{
void ICar.move()
{
// do something.
}
void ITruck.move()
{
// do something.
}

وبعد عمل object من الكلاس BMW ، يمكن تحديد اي واحدة من الدالتين يتم استدعاءها بالشكل التالي :

C#:

كود PHP:
BMW ahmedCar=new BMW();
ICar temp= (ICar)ahmedCar;
temp.move(); 
vb.net:
كود PHP:
Dim ahmedCar As New BMW() 
Dim temp As ICar DirectCast(ahmedCarICar
temp.move() 


توقيع : khaledbelal



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

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


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

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

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

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
الدرس الرابع والعشرون : System.Object دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 1 03-02-2011 03:55 PM
الدرس السادس عشر : ال OverLoading دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 1 03-02-2011 03:43 PM
الدرس السادس : بعض العمليات الحسابيه البسيطه - دورة سي شارب 2008 khaledbelal دورة CSharp 2008 من منتديات حور العين الاسلامية 0 02-22-2010 09:22 PM
الدرس الثالث والعشرون : ال Abstract دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 02-22-2010 01:57 PM
الدرس الثاني والعشرون : ال polymorphism دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 02-22-2010 01:54 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