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

الواجهات Interfaces

بدأه محمد سامر أبو سلو في 14 أبريل 2009 · 3 رد · 1,365 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أفترض بمن يتابع معي أن تكون له دراية عن الفئات وإنشائها والتعامل معها

الواجهة هي نوع مرجعي تستخدمه الأنواع الأخرى لضمان أنها تدعم عملية معينة وهي تحدد عناصر معينة يجب أن تتضمنها الفئات التي تحقق هذه الواجهات وهي تحتوي على طرائق وخصائص وعناصر أحداث تماما كالفئات

الصيغة العامة

[ <attributelist> ] [ accessmodifier ] [ Shadows ] _
Interface name [ ( Of typelist ) ]
	[ Inherits interfacenames ]
	[ [ modifiers ] Property membername ]
	[ [ modifiers ] Function membername ]
	[ [ modifiers ] Sub membername ]
	[ [ modifiers ] Event membername ]
	[ [ modifiers ] Interface membername ]فئة
	[ [ modifiers ] Class membername ]
	[ [ modifiers ] Structure membername ]
End Interface

وكما نرى من الصيغة العامة فيسبق التصريح عن الواجهة واصفات Attributes وكلمات تحديد المجال مثل Public أو الكلمة Shadows التي تعني أن هذه الواجهة تعيد تعريف واجهة موجودة وبنفس الاسم كما يمكن وراثة واجهة من أخرى تماما كالفئات وهي تحتوي على نفس العناصر الممكن احتوائها ضمن الفئات من وظائف ودالات وخصائص ... الخ ولكنها تحدد تعريف هذه الوظائف والخصائص فقط بدون الكود الذي يحدد عملها ويجب على أي فئة تحقق واجهة معينة أن توفر الكود العملي لكافة العناصر الموجودة ضمن هذه الواجهة ويمكن تعريف الواجهة على مستوى Namespace أو Module أي يجب أن يكون تعريفها عاما وغير محصور ضمن إجراء معين كما يمكننا تعشيش الواجهات بحيث أن أية واجهة ممكن أن تتضمن واجهة أخرى كما يمكن تحديد خاصية افتراضية باستخدام الكلمة Default ولا يمكن استخدام محددات الوصول مثل Public أو Private عند التصريح عن عناصر الواجهة ولكن يمكن استخدام Overloads أو Shadows وعندما تستخدم واجهة ضمن فئة يتم الإعلان عن عناصر هذه الفئة باستخدام محدد الوصول Public افتراضيا الأمر الذي يمكنك تغييره لاحقا على مستوى تلك الفئة كما لا يمكن التصريح عن متغيرات ضمن الواجهة وعند تسمية الواجهات يفضل أن يبدأ الاسم دوما بالحرف I

لنرى الآن بعض الأمثلة عن الواجهات

يمكن أن نعرف واجهة لأشخاص تحتوي على بعض الخصائص كما يلي

Interface IPerson
	Property Name() As String
	Property Birthdate() As Date
	ReadOnly Property Age() As Integer
End Interface

أو يمكننا تعريف واجهة لبعض العمليات الحسابية

Interface ISomeMath
	Function AddNumbers(ByVal a As Integer, ByVal b As Integer) As Integer
	Function AddNumbers(ByVal a As Double, ByVal b As Double) As Double
	Function Multiply(ByVal a As Integer, ByVal b As Integer) As Double
End Interface

كما يمكن أن نعرف واجهة لدفتر الهواتف ترث واجهة الأشخاص كما يلي

Interface IPhonebook
	Inherits IPerson

	Property Phone() As String
	Property Address() As String
	Sub ShowInformations()
End Interface

الآن إن كانت لدينا فئة للهواتف نريد منها أن تحقق الواجهة Phonebook نستخدم الكلمة Implements تماما بعد التصريح عن تلك الفئة وسنرى أن بيئة التطوير ستضيف الهيكل الأساسي لعناصر تلك الواجهة إلى الفئة الجديدة

Public Class Phones
	Implements IPhonebook

	Public ReadOnly Property Age() As Integer Implements IPerson.Age
		Get

		End Get
	End Property

		 .......

End Class

كما يمكن استخدام أكثر من واجهة ضمن الفئة الواحدة

Class SomeTest
	Implements IPerson
	Implements ISomeMath

	Public ReadOnly Property Age() As Integer Implements IPerson.Age
		Get

		End Get
	End Property

	.......


	Public Function AddNumbers(ByVal a As Double, ByVal b As Double) As Double _ 
				Implements ISomeMath.AddNumbers

	End Function

   .......


End Class

ويبقى عليك كتابة الكود المناسب لتلك العناصر بما يتناسب مع وظيفة الفئة التي تعمل عليها لاحظ تعريف جميع العناصر المضافة باستخدام محدد الوصول Public في هذه المرحلة

وهذا مثال على تعشيش الواجهات بداخل بعضها

Interface IPhonebook
	Interface IPersone
		Property Name() As String
		Property Birthdate() As Date
		ReadOnly Property Age() As Integer
	End Interface

	Property Phone() As String
	Property Address() As String
	Sub ShowInformations()
	Event SomeEvent(ByVal a As Int16)
End Interface

واستخدامها ضمن الفئة

Class test
	Implements IPhonebook
	Implements IPhonebook.IPersone

	.......

End Class

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#2

الله يعطيك العافيه فعلا دروس قيمه

abdullahf4.jpg
#3

بالنسبه لموضوع وراثة الواجهات و احتواء الواجهات على بعض، ما الفرق بينهم ؟؟

مدونتي: C++ Tips and Tricks

#4

وراثة الواجهات أي أن الواجهة ترث الأخرى ثم ممكن نضيف لها عناصر أخرى تماما كوراثة الفئات ( راجع مقالات الوراثة نفس المبدأ معتمد هنا )

احتواء الواجهات على بعض أي ممكن أن تكون إحدى الواجهات أحد عناصر واجهة أخرى

لاحظ الملاحظة التالية في بداية موضوعي

اقتباس
أفترض بمن يتابع معي أن تكون له دراية عن الفئات وإنشائها والتعامل معها

وذلك يتضمن أيضا مواضيع الوراثة

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 20 يونيو 2009 في 01:23

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

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