تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الجزء الثاني - تطوير الكونترول Interfaces
#1
كاتب الموضوع : 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
كيفية إضافة عناصر الي أي 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
نلاحظ من الكود اعلاه انه قد تم إضافة الكثير من الأشياء مثل Enum و ٍSub و Property و Function و Read-Only Property
الأن لنوضح كيفية استخدام 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
ولنلقي نظره سريعة علي الكود أعلاه ونقارن بين Interface و الكلاس سنجد أن جميع العناصر الموجودة داخل Interface
قد تمت إضافتها الي الكلاس بمجرد إضافة الامر 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 Iproperties يحتوي علي ثلاثة صفات Properties فقط لا غير وعندما تم عمل Implement لهذا Interface داخل Public Class MyExample2 فقد تم استخدام جميع عناصره وأيضا سنجد انه قد تم إضافة صفه جديدة الي الكلاس ولكنها ليست جزء من Interface وهي الصفة MyImage
النتيجة النهائية إن Interface يوفر وقت المبرمج وممكن استخدامه مع أكثر من Class وممكن إضافة أو إلغاء أشياء من عناصره

ببساطه شديدة Interface بالنسبة لأي برنامج كمبيوتر مثل إطار السيارة لا يمكن الاستغناء عنه ولكننا نستطيع تبديله أو تعديله او تشكيله حسبما نريد مع الفارق أن السيارة تسير بأربع إطارات فقط ولكن برنامج الكمبيوتر ممكن يسير ويتحرك وهو يحتوي علي المئات والملايين من Interfaces
أتمني أن الامر يكون واضح واني أكون قدرت أوضح مفهوم كلمة Interface وأهميته بالنسبة للمبرمج

بلتوفيق
اخوكم عمر
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  إيجاد جميع الكونترول الموجودة في الفورم Recursively Find All Controls in Form silverlight 0 501 26-05-15, 12:31 AM
آخر رد: silverlight
  تحويل الفيديو في برامجك-الجزء الثاني( إصلاح للمشاكل + تعديل للروابط + توضيح للأمر ) RaggiTech 1 712 10-12-14, 06:37 PM
آخر رد: abulayth
  الجزء الثالث من:كيف تجعل الـ Text Box ذكي!يترجم العمليات الحسابية ويخرج الناتج (الأقواس المتعددة) !! أنس محمود 9 2,069 06-12-14, 10:11 PM
آخر رد: RFEE3 ALSHAN
  حساب قيمة معادلة(اقصد صيغة دون مجاهيل) مكتوبة بالتكست : الجزء الخامس والاخير محمد شريقي 3 906 28-05-13, 01:06 PM
آخر رد: Sajad
  الجزء الثاني من:كيف تجعل الـ Text Box ذكي!يترجم العمليات الحسابية ويخرج الناتج ( العمليات المتعددة)! أنس محمود 0 688 22-02-13, 12:39 AM
آخر رد: أنس محمود
  مقال- تطوير الكونترول Property Attributes الجزء الثالث RaggiTech 0 365 06-10-12, 12:20 AM
آخر رد: RaggiTech
  مقال- تطوير الكونترول Skin Control RaggiTech 0 531 06-10-12, 12:08 AM
آخر رد: RaggiTech
  مقال- تطوير الفورم رسم الفورم باستخدام +GDI وتحريكه Moving و تغيير أبعاده Resize RaggiTech 2 873 05-10-12, 07:00 PM
آخر رد: RaggiTech
  مقال- Custom EventHandler & Classes - الجزء الثاني RaggiTech 0 356 05-10-12, 11:50 AM
آخر رد: RaggiTech
  مقال- Custom EventHandler & Classes - الجزء الأول RaggiTech 6 648 05-10-12, 11:48 AM
آخر رد: RaggiTech

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


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