الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مقال: تطوير الكونترول Interfaces

بدأه a_pess في 13 أغسطس 2008 · 5 رد · 1,657 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الموضوع : تطوير الكونترول 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 وأهميته بالنسبة للمبرمج

بلتوفيق

اخوكم عمر

يمكن متابعة الجزء الأول من الموضوع علي هذا الرابط

الجزء الأول

تم تعديل هذه المشاركة بواسطة a_pess في 13 أغسطس 2008 في 22:30

#2

السلام عليكم

اشكرك اخي a_pess بصراحة درس رائع

وليك درس اخر لك والى اعضاء منتدنا الكريم

/index.ph...c=79044&hl=

وتقبل الله منا ومنك :)

الفريق المصري للبرمجة

تحليل وتصميم برامج قواعد بيانات لاتصال بينا masry4u@hotmail.com

#3

جزاك الله خير يامهندس (a_pess) وإلى الامام وها انا أحاول أن أعملcontrol

#4

جميل جدا أخى عمر -- منتظر جديدك

----

وأعتقد أن أسئلتى لك ستبدأ من الدرس القادم لأنة فى إعتقادى سيخص تصميم وتطوير الكونترول من الداخل

----

تم تعديل هذه المشاركة بواسطة vbm في 14 أغسطس 2008 في 15:58

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

#5

شكراً لك على هذا الدرس,,,

لكن التطبيق اهم شيء!!!!

Gaza.gif

3refhom.jpg

صائب

مبرمج مبتدأ في vb.net

saep435@hotmail.com

#6

جزاكم الله خيرا

مواضيع مشابهة