تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الواجهات Interfaces
#1
كاتب الموضوع : samerselo

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

كود :
[ <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
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  الجزء الثاني - تطوير الكونترول Interfaces RaggiTech 0 385 06-10-12, 12:19 AM
آخر رد: RaggiTech
  Using Generics with Interfaces RaggiTech 0 237 01-10-12, 07:47 PM
آخر رد: RaggiTech
  The Interfaces RaggiTech 0 250 01-10-12, 06:53 PM
آخر رد: RaggiTech

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


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