السلام عليكم
اخواني الكرام
ابحث عن شرح عن interface مع مثال عليها إن أمكن
وشكرا
السلام عليكم
اخواني الكرام
ابحث عن شرح عن interface مع مثال عليها إن أمكن
وشكرا
"إن الذين آمنوا وعملوا الصالحات كانت لهم جنات الفردوس نزلا"
استخدام ال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
أخي الكريم ...
تعتبر الواجهة من أهم معالم البرمجة غرضية التوجه في 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
ملاحظة :
نسيت كتابة الصيغة في C# :
class:Base Class,Interface1,Interface2,......InterfaceN
و الشكر للأخ bashmohandes على المثال الجميل ...
مشكورين ايها الأخوة على المجهود الرائع ، لأني بصراحة عندي امتحان غدا وحاولت فهمها من الكتاب ولم استطع ولكن طريقة الأخ (بشمهندس) والأخ فراس كانت رائعة
"إن الذين آمنوا وعملوا الصالحات كانت لهم جنات الفردوس نزلا"
اقتباستعتبر الواجهة من أهم معالم البرمجة غرضية التوجه في C#
من اين اتيت بهذا التعريب يا اخى؟
...اتمنى ان يفيدكم ما فى المرفقات فاسلوبه سهل وبسيط
آسف أخ عبد الواحد .... لم أر مشاركتك حتى الآن ... هل يمكن أن أعرف إعتراضك على الجملة ؟؟؟؟ أنت لم توضح لي المشكلة بكلامك ...
جزاكم الله كل خير والامتحان اجى حلوووو يا حلووو وسهل الحمد لله وان شاء الله بنكمل بعد العيد ....
وكــــــــــــل عـــــــــــــام والــــــجــــمــــــيـــــــع بـــــــــخـــــــيـــــــــر
ibhadad@hotmail.com
اقصد هل التعريبات التى تستخدمها فى كلامك معترف بها ومتفق عليها
بالطبع كلنا نعتز بلغتنا العربيه ولكن عند استخدام بعض التعريبات لم يتم الاتفاق عليها(اقصد بالطبع تعريب المصطلحات العلميه ..الواجهه, الوراثه,الطرائق,الصنف ) فان ذلك يصعب الاتصال بيننا الى حد ما (هذا مجرد رأى)
أتفهم رايك تماماً أخ عبد الواحد و أنا من الأشخاص الذين يفضلون إستخدام المصطلحات .... و لكن أعتقد أيضاً أن الترجمة إلى "الواجهة" شبه متفق عليها و مفهومة لدى الجميع .... و إن كنت أفضل شخصياً إستخدام المصطلح دون تعريبه ... و شكراَ على ملاحظتك ..
هذا الموضوع مغلق.