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

أريد شرح عن interface

مغلق
بدأه ijh_pro في 25 أكتوبر 2005 · 10 رد · 5,011 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اخواني الكرام

ابحث عن شرح عن interface مع مثال عليها إن أمكن

وشكرا

"إن الذين آمنوا وعملوا الصالحات كانت لهم جنات الفردوس نزلا"

#2

استخدام الInterfaces دائما يستخدم عندما تريد أن تضيف صفة لمجموعة من الClasses..

مثلاً اذا كنت تريد أن تصنع Class تصف مدفع Cannon و تريد أن تجعل المطور أن يطور الClasses الخاصة بالطلقات الخاصة بالمدفع كما يريد و لكن يجب ان تكون هذه الclasses لها بعض السمات الأساسية (صفات) مثلاً ان تحتوي على function باسم Fire بحيث انك تستطيع أن تستخدم myBomb.Fire فيمكنك أن تقوم بعملInterface يسمى IShotable (أو قابل للاطلاق) و حرف الI كناية عن الInterface

و يكون IShotable بهذا الشكل

interface IShotable
{
void Fire();
}

على سبيل المثال

و في الCannon Class

public class Cannon
{
IShotable[] myBombs;
public Cannon(IShootable[] bombs)
{
this.myBombs = bombs;
}
public void FireCannon()
{
foreach(IShootable bomb in myBombs)
bomb.Fire();
}
}

و كما لاحظت فأنت لم تقم بعمل Implementation للFunction الخاصة بFire و لكن افترضت (و فرضت) و جودها في الobject القابل للاطلاق و هنا يجب على الDeveloper أن يقوم بعمل هذا

public Bomb : IShootable
{
public overrides void Fire()
{
//يكتب هنا مايجب أن يحدث عند اطلاق الطلقة
}
//يمكن أن تحتوي الكلاس على أي دوال او خصائص أخرى 
}

و هنا في البرنامج سيكتب المبرمج

Bomb[] myBombs = new Bomb[10];
myBombs.Initialize();
Cannon myCannon = new Cannon(myBombs);
myCannon.FireCannon();

تم تعديل هذه المشاركة بواسطة bashmohandes في 25 أكتوبر 2005 في 20:12

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#3

أخي الكريم ...

تعتبر الواجهة من أهم معالم البرمجة غرضية التوجه في C# ..

و ما أدى إلى الحاجة إلى وجود الواجهات هو التغلب على مشكلة الوراثة المتعددة الموجودة في C++ ... حيث أن الإتجاه الحديث و الذي قادته لغة Java هو الإتجاه ضد السماح بالوراثة المتعددة ... و الإكتفاء بالوراثة الإحادية .... و لكن المشكلة هي الحاجة إلى وراثة من أكثر من مصدر ( الأصناف سابقاً ) ... فتم تصميم هذا المفهوم الجديد ... و هو مفهوم الواجهات، حيث كانت الواجهة ( Interface ) في Java مكاناً لتعريف الثوابت ( Final Attributes ) و الطرائق المجردة ( Abstract Methods ) .. حيث تتم وراثة هذه الواجهة من أحد الأصناف مع إمكانية الوراثة من أكثر من واجهة معاً، و كان ذلك وفق الصيغة التالية :

public class Test extends JFrame implements IInterface1,Interface2, .... ,InterfaceN

و هكذا تم حل مشكلة الحاجة إلى الوراثة من أكثر من مصدر ( صنف - واجهة ) مع الإستغناء عن الوراثة المتعددة ( Multi-Inheritance )، فتشابه أسماء الطرائق هنا ضمن الواجهات غير مهم، لأن ليس هناك كود ضمن هذه الطرائق، و عند وراثة هذه الواجهات سيضطر الصنف لإعادة تعريف هذه الطريفة ضمن الصنف و بالتالي فالكود المكتوب ضمن الصنف هو الذي سينفذ دوماً ...

تم تطوير هذا المفهوم أكثر الآن في C# حيث أمكن للواجهات أن تحتوي على كل من :

Methods

Properties

Indexers

Events

راجع المثال الموجود في الـ MSDN على العنوان التالي :

ms-help://MS.MSDNQTR.2003APR.1033/csref/html/vcrefTheInterfaceType.htm

#4

ملاحظة :

نسيت كتابة الصيغة في C# :

class:Base Class,Interface1,Interface2,......InterfaceN

و الشكر للأخ bashmohandes على المثال الجميل ...

#5

مشكورين ايها الأخوة على المجهود الرائع ، لأني بصراحة عندي امتحان غدا وحاولت فهمها من الكتاب ولم استطع ولكن طريقة الأخ (بشمهندس) والأخ فراس كانت رائعة

"إن الذين آمنوا وعملوا الصالحات كانت لهم جنات الفردوس نزلا"

#6
اقتباس
تعتبر الواجهة من أهم معالم البرمجة غرضية التوجه في C#

من اين اتيت بهذا التعريب يا اخى؟

...اتمنى ان يفيدكم ما فى المرفقات فاسلوبه سهل وبسيط

interfaces and structs.pdf

#7

آسف أخ عبد الواحد .... لم أر مشاركتك حتى الآن ... هل يمكن أن أعرف إعتراضك على الجملة ؟؟؟؟ أنت لم توضح لي المشكلة بكلامك ...

#8

جزاكم الله كل خير والامتحان اجى حلوووو يا حلووو وسهل الحمد لله وان شاء الله بنكمل بعد العيد ....

وكــــــــــــل عـــــــــــــام والــــــجــــمــــــيـــــــع بـــــــــخـــــــيـــــــــر

ibhadad@hotmail.com

#9

اقصد هل التعريبات التى تستخدمها فى كلامك معترف بها ومتفق عليها

بالطبع كلنا نعتز بلغتنا العربيه ولكن عند استخدام بعض التعريبات لم يتم الاتفاق عليها(اقصد بالطبع تعريب المصطلحات العلميه ..الواجهه, الوراثه,الطرائق,الصنف ) فان ذلك يصعب الاتصال بيننا الى حد ما (هذا مجرد رأى)

#10

تعبير الواجهة قرأته أكثر من مرة على صفحات المنتدى فأعتقد أنه مصطلح شبه رسمي (حيث أنه لا توجد منظمة توحد التسميات العربية للأسف)

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#11

أتفهم رايك تماماً أخ عبد الواحد و أنا من الأشخاص الذين يفضلون إستخدام المصطلحات .... و لكن أعتقد أيضاً أن الترجمة إلى "الواجهة" شبه متفق عليها و مفهومة لدى الجميع .... و إن كنت أفضل شخصياً إستخدام المصطلح دون تعريبه ... و شكراَ على ملاحظتك ..

هذا الموضوع مغلق.

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