06-10-12, 12:19 AM
كاتب الموضوع : silverlight
الموضوع : تطوير الكونترول Interfaces اللغة المستخدمة: الفيجوال بيسك
التطبيق: فيجوال استوديو 2005 و 2008
المستوي: التقييم متروك للقارئ
إعداد: مهندس / عمر أمين إبراهيم
Interface وببساطه شديدة هو عبارة عن مخزن صغير يتم وضع فيه الكثير من الأشياء وبدون إضافة أي كود تماما فقط مجرد تعريف لأشياء يمكن استخدامها داخل أي كلاس Class
وعند استخدامه داخل أي كلاس يجب استخدام جميع العناصر الموجودة داخل Interface أي لا يمكن استخدام عنصر ما وترك باق العناصر الموجودة داخل Interface
العناصر التي من الممكن استخدامها أو وضعها داخل Interface كثيرة ومنها علي سبيل المثال Methods أو Events أو Property أو Function أو Enum أو Structure وأشياء أخري.
في رأيي الشخصي استخدام Interface يقلل من كتابة الكود داخل الكلاس المختلفة ومن الممكن استخدام أكثر من Interface داخل الكلاس واحدي أهم المميزات أيضا أننا نستطيع إلغاء عناصر أو إضافة أي عناصر أخري جديدة لأي Interface ومن ثم عمل Implementation لهذه العناصر بدون أن تتأثر باق العناصر الاخري
لكي تفهم Interface وتشعر بالهدف من استخدامه عليك أن تطبق الامر بصوره عمليه عندها فقط ستشعر بأهميته وستفهم الهدف من استخدامه
كيفية إضافة Interface
ممكن إضافته لأي مشروع مثل Windows Forms أو Windows Control Library أو أي Class عادي ويتم ذلك من القائمه الرئيسيه ومن تحت Project واختار Add New Item…. سيتم فتح نافذة جديدة ومن تحت Common Items نختار Code ومن ثم نختار Interface ايضا ممكن عمل ذلك من نافذة Solution Explorer والوقوف بالماوس علي اسم المشروع وضغط يمن الماوس ومن ثم اختيار Add New Item… ونكمل كما سبق ونختار Interface والمثال التالي يوضح شكل الكود بعد إضافة Interface الي المشروع
كود :
Public Interface Interface1
End Interface
تتم إضافة أي عناصر كما نريد وهذه العناصر قد تكون صفات Property أو أي شئ أخر كما تحدثنا سابقا والكود التالي يوضح الامر
كود :
Public Interface Interface1
Enum TextPlaces
Left
Middle
Right
End Enum
Property MyColor() As Color
Property MyString() As String
Sub DrawEllipse(ByVal e As PaintEventArgs)
Sub PopulateData()
Sub InitializeData(ByVal A As String, ByVal B As String)
ReadOnly Property myInteger() As Integer
Function DrawRectangle(ByVal g As Graphics, ByVal bounds As Rectangle)
End Interface
الأن لنوضح كيفية استخدام How to Implement الأشياء الموجودة داخل هذا Interface
ولعمل ذلك نقوم بفتح كلاس جديد وبأي مسمي نختار وممكن نضيف له مثلا Control أو أي شئ أخر عن طريق استخدام Inherits مثلا
ومن ثم نستخدم الامر Implements لكي نستخدم Interface داخل الكلاس والكود سيكون كالتالي
نلاحظ الأتي انه بمجرد كتابة Implements Interface1 والضغط علي مفتاح Enter سيتم إضافة باق الكود تلقائيا
كود :
Public Class MyExample
Inherits Control
Implements Interface1
Public Sub DrawEllipse(ByVal e As System.Windows.Forms.PaintEventArgs) Implements Interface1.DrawEllipse
' أضف الكود الذي تحتاجه هنا
End Sub
Public Function DrawRectangle(ByVal g As System.Drawing.Graphics, ByVal bounds As System.Drawing.Rectangle) As Object Implements Interface1.DrawRectangle
' أضف الكود الذي تحتاجه هنا
End Function
Public Sub InitializeData(ByVal A As String, ByVal B As String) Implements Interface1.InitializeData
' أضف الكود الذي تحتاجه هنا
End Sub
Public Property MyColor() As System.Drawing.Color Implements Interface1.MyColor
Get
' أضف الكود الذي تحتاجه هنا
End Get
Set(ByVal value As System.Drawing.Color)
' أضف الكود الذي تحتاجه هنا
End Set
End Property
Public ReadOnly Property myInteger() As Integer Implements Interface1.myInteger
Get
' أضف الكود الذي تحتاجه هنا
End Get
End Property
Public Property MyString() As String Implements Interface1.MyString
Get
' أضف الكود الذي تحتاجه هنا
End Get
Set(ByVal value As String)
' أضف الكود الذي تحتاجه هنا
End Set
End Property
Public Sub PopulateData() Implements Interface1.PopulateData
' أضف الكود الذي تحتاجه هنا
End Sub
End Class
قد تمت إضافتها الي الكلاس بمجرد إضافة الامر Implements Interface
الأن نستطيع التعامل مع هذه العناصر بشكل عادي جدا أي نضيف لها الكود الذي نحتاجه مع ملاحظة كما قلت سابقا أننا لا نستطيع أن نقوم بإهمال أي جزء موجود داخل Interface ولو أردنا ذلك سيحدث خطأ لذلك يجب أن نحدد العناصر بدقه داخل كل Interface سنقوم بإنشائه مثلا ممكن نعمل Interface للصفات فقط أو Interface للطرق Methods فقط وهكذا يعني ببساطه اقدر اخلق الكثير من Interface وممكن كل Interface يحتوي علي عنصر واحد أو أكثر حسب رغبتي واحتياجي وطبقا لمتطلبات البرنامج
طبعا عمل Implement لأي Interface داخل أي كلاس لا يمنع إضافة عناصر وصفات وطرق أخري لهذا الكلاس والمثال التالي يوضح ذلك
كود :
Public Interface Iproperties
Property MyColor() As Color
Property MyString() As String
Property MyInteger() As Integer
End Interface
كود :
Public Class MyExample
Inherits Control
Implements Iproperties
Public Property MyColor() As System.Drawing.Color Implements Iproperties.MyColor
Get
End Get
Set(ByVal value As System.Drawing.Color)
End Set
End Property
Public Property MyInteger() As Integer Implements Iproperties.MyInteger
Get
End Get
Set(ByVal value As Integer)
End Set
End Property
Public Property MyString() As String Implements Iproperties.MyString
Get
End Get
Set(ByVal value As String)
End Set
End Property
Public Property MyImage() As Image
Get
End Get
Set(ByVal value As Image)
End Set
End Property
End Class
النتيجة النهائية إن Interface يوفر وقت المبرمج وممكن استخدامه مع أكثر من Class وممكن إضافة أو إلغاء أشياء من عناصره
ببساطه شديدة Interface بالنسبة لأي برنامج كمبيوتر مثل إطار السيارة لا يمكن الاستغناء عنه ولكننا نستطيع تبديله أو تعديله او تشكيله حسبما نريد مع الفارق أن السيارة تسير بأربع إطارات فقط ولكن برنامج الكمبيوتر ممكن يسير ويتحرك وهو يحتوي علي المئات والملايين من Interfaces
أتمني أن الامر يكون واضح واني أكون قدرت أوضح مفهوم كلمة Interface وأهميته بالنسبة للمبرمج
بلتوفيق
اخوكم عمر