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

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

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

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

C#:


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


كود :
Public Interface ICar
Property carMaxSpeed() As Integer
Sub AddItem(ByVal Item As String)

End Interface
لا تنسى ان بامكانك اشتقاق interface من آخر بالشكل التالي مثلاً :

C#:


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


كود :
Public Interface ICar
Inherits IDisposable
Property carMaxSpeed() As Integer
Sub AddItem(ByVal Item As String)

End Interface
ولعمل implements لاي interface نقوم بكتابة الكود التالي :

C#:


كود :
public class BMW : Car
{

}

public class BMW2 : Car, Truck
{

}
VB.net:


كود :
Public Class BMW
Implements Car

End Class

Public Class BMW2
Implements Car, Truck

End Class
الآن يمكنك اعادة كتابة الدوال الموجودة . اضافة دوال جديدة ، ومن ثم استخدام الفئة كما قمنا بذلك قبلاً .
}}}}
تم الشكر بواسطة:
#2
don't do with interface :

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

C#:

كود :
ICar x=new ICar();
vb.net:

كود :
Dim x As New ICar()
- لا يمكن تعريف متغير عادي في ال interface ، لذا مثل هذه الجملة داخل ال interface خاطئة :

c#:

كود :
int number;
vb.net:

كود :
Dim number as integer
البديل ، هو عمل خاصية set و get بالشكل التالي :

C#:

كود :
int x {set;get;}
vb.net:

كود :
Private Property x() As Integer
Get
End Get
Set
End Set
End Property
- بالطبع لا يمكنك كتابة أي سطر كود داخل ال interface .
- كما لا يمكن عمل constructor لل interface .
}}}}
تم الشكر بواسطة:
#3
كاتب المشاركة : أحمد جمال

Name Clashes

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

C#:


كود :
public interface ICar
{
void move();
}
public interface ITruck
{
void move();
}
public class BMW: ITruck, ICar
{
}
vb.net:


كود :
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#:


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


كود :
Public Class BMW
Implements ITruck
Implements ICar

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

C#:


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


كود :
BMW ahmedCar=new BMW();
ICar temp= (ICar)ahmedCar;
temp.move();
وبعد عمل object من الكلاس BMW ، يمكن تحديد اي واحدة من الدالتين يتم استدعاءها بالشكل التالي :

C#:


كود :
Dim ahmedCar As New BMW()
Dim temp As ICar = DirectCast(ahmedCar, ICar)
temp.move()
vb.net:


كود :
Dim ahmedCar As New BMW()
Dim temp As ICar = DirectCast(ahmedCar, ICar)
temp.move()
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  الدرس الأول : تحميل .net 2008 ومميزات استخدامه oneyemenweb2 1 669 07-03-13, 02:04 AM
آخر رد: abdoojh
  اعلان - انتهاء الدورة - الدرس التاسع والسبعون -) RaggiTech 0 598 14-10-12, 11:23 PM
آخر رد: RaggiTech
  الدرس الثامن والسبعون - Ajax RaggiTech 2 868 14-10-12, 11:22 PM
آخر رد: RaggiTech
  الدرس السابع والسبعون - ASP.net وقواعد البيانات RaggiTech 2 906 14-10-12, 11:19 PM
آخر رد: RaggiTech
  الدرس السادس والسبعون - ASP.net - الجزء الثالث RaggiTech 7 1,144 14-10-12, 11:14 PM
آخر رد: RaggiTech
  الدرس الخامس والسبعون - ASP.net - الجزء الثاني RaggiTech 5 1,310 14-10-12, 11:07 PM
آخر رد: RaggiTech
  الدرس الرابع والسبعون - ASP.net RaggiTech 6 1,084 14-10-12, 10:58 PM
آخر رد: RaggiTech
  الدرس الثالث والسبعون - مقدمة إلى تطوير المواقع RaggiTech 4 843 14-10-12, 10:44 PM
آخر رد: RaggiTech
  الدرس الثاني والسبعون - مقدمة إلى Mono RaggiTech 0 594 14-10-12, 10:37 PM
آخر رد: RaggiTech
  الدرس الواحد والسبعون - XML Commenting RaggiTech 2 793 14-10-12, 10:35 PM
آخر رد: RaggiTech

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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم