برمجة - شبكات - كمبيوتر - منتديات الفريق العربي للبرمجة: ما فائدة الـinterface فى لغة الجافا - برمجة - شبكات - كمبيوتر - منتديات الفريق العربي للبرمجة

اقفز إلى الموضوع

  • (3 صفحات) +
  • 1
  • 2
  • 3
  • لا تستطيع بدء موضوع جديد
  • الموضوع مقفل

ما فائدة الـinterface فى لغة الجافا قيم الموضوع: -----

#1 العضو غير متواجد حاليا   احمد غريب 

  • مشرف قسم الأسمبلي سابقاً
  • PipPipPipPipPip
  • المجموعة: المشرفين القدامى
  • المشاركات: 2765
  • الإلتحاق: 10-April 04
  • الجنس:ذكر
  • الدولة:بلاد شمس منتصف الليل
  • اهتمامات:اسمبلى <br />وندوز API<br />علم النفس<br />تنس الطاولة
  • الدولة :

السمعة: 24
جيد

تمت المشاركة 24 July 2007 - 11:16 PM

السلام عليكم

ااسف لطرح سؤال مبتداء جداً ويمكن الحصول على الكثير من الروابط من خلال جوجل, ولكن اريد معرفة الفائدة وليس كيفية الاستخدام..
اعرف مثلاُ ان كلاس abstact تستطيع ان تضع فيه بعض الدوال العادية بالاضافة لدوال abstract يتم تعريفها لاحقاً, ولكن إذا قمت بعمل كلاس interface فقط ولا يحتوى على اى دوال بشفرة ما الفائدة التى احصل عليها, هل هى فقط لعمل تنظيم واجبار المستخدم ان يلتزم بإستخدام اسماء دوال معينة ام ان هناك شيئ اخر لا اعرفه..

والسلام عليكم
0



#2 العضو غير متواجد حاليا   java_dotnet 

  • عضو جديد
  • Pip
  • المجموعة: اعضاء جدد
  • المشاركات: 6
  • الإلتحاق: 24-July 07
السمعة: 0
عادي

تمت المشاركة 24 July 2007 - 11:50 PM

اهلين اخوي موضوع الانتر فيس
في الجافا موضوع مهم جدا فعن طريقة تقوم بتعريف ال methods دون كتابة ما تحتويه هذه ال methods من وضيفة عمل
هذه مهمة في عدة حالات ساقول مثال بسيط يمكن ان تستفيد منه و تفهم ماذا يعني ال interface
اذا كانا نعم مشرو ع للجامعة مثلا وكان لدينا نوعين من الطلاب طلاب ماستر وطلاب بكلوريوس
جميع الطلاب لهم معلومات ثابتة وطريقة حساب العلامات بطريقة تابتة هذا على سبيل المثال
و لا كن طلاب الماجستير تكون علامة النجاح لديهم من 75 اما طلاب البكلوريوس فعلامة النجاح من 60
في هذه الحالة ال
method التي تحدد هل الطالب ناجح او راسب هي مثود واحدة يمكن ان نعرفها في ال interface و ليكن اسمها S
ولا كن مع ان هذه ال
method واحدة الا اننا سنعيد تعريفها في كل من الكلاسين التابعين لطلاب الماجستير و طلاب البكلوريو بطريقة مختلفة لمعرفة الطالب ناجح او راسب
هذا مثال بسيط يمكن ان نستفيد منه في فهم الفائدة لل interface

اتمني ان تكون الفكرة وصلت و وفقك الله

0

#3 العضو غير متواجد حاليا   احمد غريب 

  • مشرف قسم الأسمبلي سابقاً
  • PipPipPipPipPip
  • المجموعة: المشرفين القدامى
  • المشاركات: 2765
  • الإلتحاق: 10-April 04
  • الجنس:ذكر
  • الدولة:بلاد شمس منتصف الليل
  • اهتمامات:اسمبلى <br />وندوز API<br />علم النفس<br />تنس الطاولة
  • الدولة :

السمعة: 24
جيد

تمت المشاركة 24 July 2007 - 11:55 PM

كلام جميل يعنى الinterface هو فقط لاجبار المستخدم على اتباع تعريف موحد لاسماء الدوال, لانه على حسب المثال الذي ذكرته فإن المبرمج ليس مجبر على تعريف الدوال فى كـinterface بل يستطيع بكل سهولة ان يضع داله إسمها S فى كلاس طالب الماجستير , ويستطيع ان يضع داله اخرى وايضاً يسميها S او اي شيئ اخر فى كلاس طالب البكلوريوس, اليس كذلك؟
0

#4 العضو غير متواجد حاليا   b.m.s 

  • خبير C++
  • PipPipPip
  • المجموعة: الخبراء المعتمدون
  • المشاركات: 653
  • الإلتحاق: 29-July 04
  • الجنس:ذكر
  • الدولة:الرياض
السمعة: 5
عادي

تمت المشاركة 25 July 2007 - 12:29 AM

أوه الأستاذ أحمد :rolleyes: , كيفك إن شاء الله تكون بألف خير .

عندي كم معلومة بسيطة يمكن تفيدك في هذه المسألة , بالنسبة للفرق بين الClass والInterface فهو معروف وسأذكرها للفائدة فقط - فلا يمكنك أن ترث من أكثر من كلاس واحد لكن يمكن أن تقوم بـ implement لأكثر من Interface - وهذه هو إختصار لجواب مسألتك والتفصيل قادم إن شاء الله - وتوجد فروق أخرى مثل أنك لا تستطيع أن تكون object (كائن) من الInterface بخلاف الClass الذي أهمية هي تكوين كائن منه .

يوجد أيضاً ال abstract class الذي يختلف عن ال Interface في أنه لا تستطيع أن ترث أكثر من نوع منه بخلاف الInterface - مثل ما ذكرت سابقاً - , ويوجد فرق آخر وهو أن الabstract class يسمح بتعريف دوال وكاملة وبيانات داخله بخلاف الInterface .

إذا متى نستخدم الabstract class ومتى نستخدم الInterface . أو بالأصح ما فائدة الabstract class و الInterface .

بالنسبة للــ abstract class ميزته أنه يسمح لك بتعريف دوال تكون أساسية للـ class بحيث يكون النواة الأساسية للكلاس , أو ما يسمى بالـ Default behavior بحيث أنك توفر دوال تكون تستخدم في جميع الكلاسات حتى لو لم يقوم الذي يرث منها بإعادة تعرفيها مثل دالة ToString وهذه يستخدمونها كبنية تحتية للكلاس مثل كلاس Object . ويستخدم بقلة لأنه كما ذكرت لا يمكن أن ترث منه إلا مرة واحدة وبالتالي التوسعة والتطوير تحتاج إلى جهد أكبر .

أما الInterface فأهم ميزه له أنه يسمح بالـImplement من أكثر من الInterface , وهذه ميزته أن يسمح لك بتطوير الكود بسهولة وبالتالي مسألة تطوير الكود هي فقط إضافة Interface جديدة فقط . وغالباً ما تستخدم لدلالة عن الFuncyionaltiy التي يوفرها الكلاس , فأنت تضمن أن الكلاس الذي سيأتيك يستقبل نوع محدد ويعيد نوع آخر محدد . ويستخدم بكثرة لأنه يريح المبرمجين وليس عليه قيود كـabstract class .

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

عموماً , الآن يستخدم الabstract class لدلالة على تصنيف هذا الClass فهو من أي نوع بالضبط أما الInterface فهو يستخدم لدلالة على Functyionaltiy التي يقدمها هذا الكلاس (هل يمكنه القراءة , الكتابة , العمل في الخلفية ).

ولو تلاحظ أنها كان السائد لتعريف Thread هو أن ترث من الكلاس Thread وتقوم بعمل إعادة تعريف للدالة run ومن ثم يعمل كائن لوحده , لكن بعدها تم تعريف Interface Runnable يتيح نفس خصائص الThread مع تعريف الدالة Run , وهذه الإضافة هي فقط لتسهيل العمل للمبرمجين حتى لا يجبروا على أن يرثوا فقط لمرة واحدة .

أتمنى إني أكون وضحت شئ تستفيد منه .:)

تم تعديل هذه المشاركة بواسطة b.m.s: 25 July 2007 - 12:35 AM

0

#5 العضو غير متواجد حاليا   nardien28 

  • مشرفة قسم الجافا
  • PipPipPip
  • المجموعة: المشرفين القدامى
  • المشاركات: 518
  • الإلتحاق: 12-July 04
  • الجنس:أنثى
السمعة: 0
عادي

تمت المشاركة 25 July 2007 - 12:29 AM

صحيح يا اخي محمد .. تستطيع تسمية اسماء الدوال كما تريد وانجاز عملك مباشرة
هي ليست اكثر من اضافة نوع من التنظيم والتقييد للمطوريين وذلك يفيد في المشاريع الكبيرة وفي المشريع البرمجية التي يشترك فيها اكثر من شخص ..
كما يفيد في مواضيع اعادة الاستخدام Reuseabiliy ..
عندما تريد اتاحة فرصة لغيرك الاستفادة من عملك بدون طمس معالمه (توزيعات مختلفة لنفس الفكرة )
كما ان موضوع الواجهات Interface فتحت افاق واسعة ومرونة في مجال هندسة البرمجيات من خلال مايسمى النماذج التصميمية Design Patterns باعتبارها اعلى مستوى ممكن من التجريد ( تجريد التفاصيل ) والنظر من اعلى
وبهذه الطريقة .. توزيع العمل على مستويات .. يسهل الفهم والقراءة Readability

وتحقيق قراءة اسهل وفهم اسهل وخواص اعادة الاستخدام يفيد في زيادة معايير جودة المنتج البرمجي وفق المعايير العالمية لجودة البرمجيات التي تعتمدها IEEE والـ ISO
وهذه المعايير تؤخذ بعين الاعتبار في شركات البرمجيات الكبيرة ومسابقات البرمجيات العالمية بتخصيص فريق خاص لفحص تحقيق بنودها

تم تعديل هذه المشاركة بواسطة nardien28: 25 July 2007 - 12:51 AM

0

#6 العضو غير متواجد حاليا   علاء الصالحي 

  • مشرف قسم الجافا
  • أيقونة
  • المجموعة: المشرفون
  • المشاركات: 3270
  • الإلتحاق: 18-February 03
  • الجنس:ذكر
  • الدولة:فلسطين
  • الدولة :

السمعة: 33
جيد

تمت المشاركة 25 July 2007 - 12:31 AM

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



#7 العضو غير متواجد حاليا   java_dotnet 

  • عضو جديد
  • Pip
  • المجموعة: اعضاء جدد
  • المشاركات: 6
  • الإلتحاق: 24-July 07
السمعة: 0
عادي

تمت المشاركة 25 July 2007 - 12:32 AM

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

و هذه هي فكرة الاوبجكت اورينتيد
في البرمجة
0

#8 العضو غير متواجد حاليا   الطائر التركي 

  • عضو
  • PipPip
  • المجموعة: اعضاء
  • المشاركات: 119
  • الإلتحاق: 27-January 07
  • الجنس:ذكر
  • الدولة :

السمعة: 0
عادي

تمت المشاركة 25 July 2007 - 12:49 AM

السلام عليكم
انا ايضا تسئلت هذا السؤال عندما دراسة هذه الغة --السبب اني لم اكن اعرف هذا المصطلح الي عند دراستها-- ، ولعلي لم اجد اجابة شافيه
ولكن الملاحظ انها تظهر بشكل واضح مع الاحداث -- even -- لذلك قولت لنفس لعلا السبب هو توحيد استخدام اسم الميسود اللي المفروض المترجم يعرفها بمعني معين
شكرا
0

#9 العضو غير متواجد حاليا   احمد غريب 

  • مشرف قسم الأسمبلي سابقاً
  • PipPipPipPipPip
  • المجموعة: المشرفين القدامى
  • المشاركات: 2765
  • الإلتحاق: 10-April 04
  • الجنس:ذكر
  • الدولة:بلاد شمس منتصف الليل
  • اهتمامات:اسمبلى <br />وندوز API<br />علم النفس<br />تنس الطاولة
  • الدولة :

السمعة: 24
جيد

تمت المشاركة 25 July 2007 - 12:58 AM

السلام عليكم

اشكركم جميعاً بعنف وحرارة على اثراء الموضوع..

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

والان بعد هذا الشرح استطيع ان اقول باني فهمت المغزى ولي عودة إن شاء الله تعالى..

والسلام عليكم
0

#10 العضو غير متواجد حاليا   احمد غريب 

  • مشرف قسم الأسمبلي سابقاً
  • PipPipPipPipPip
  • المجموعة: المشرفين القدامى
  • المشاركات: 2765
  • الإلتحاق: 10-April 04
  • الجنس:ذكر
  • الدولة:بلاد شمس منتصف الليل
  • اهتمامات:اسمبلى <br />وندوز API<br />علم النفس<br />تنس الطاولة
  • الدولة :

السمعة: 24
جيد

تمت المشاركة 25 July 2007 - 01:03 AM

انتهز الفرصة واسلم على اخوى وحبيبي b.m.s المخضرم, وين ايامك انا الحمد لله بخير ونعمه وبحاول اتعلم الجافا كما ترى, والغريب ان لغة الجافا فى الشرق ولغة الاسمبلي فى الغرب, ورغم انى ما زلت مدمن اسمبلي إلا ان لغة الاسمبلي ما عاد تاكل عيش والمعروف ان لغة الجافا بتاكل مش عيش وبس لا كمان فى لحمة إن شاء الله..
0

  • (3 صفحات) +
  • 1
  • 2
  • 3
  • لا تستطيع بدء موضوع جديد
  • الموضوع مقفل

1 أعضاء يقرؤون هذا الموضوع
0 أعضاء، 1 زوار و 0 أعضاء مختبؤون





لإفضل مشاهدة للمنتدى إستخدم مستعرض فايرفوكس