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

سؤال جافا فى البرمجة الكائنية

مغلق
بدأه احمد غريب في 24 يوليو 2007 · 4 رد · 819 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

بعد ان تقطعت بي السبل وحاولت ان اجد حل قررت اللجوء اليكم فى هذا السؤال الذي قض مضجعي وحيرني..

السؤال هو فى برنامج KitchenSink وهو برنامج او مثال ضمن حزمة gwt وهى الاداة التى تستخدم لعمل مواقع انترنت ضمن حزمة جوجل..

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

لإلقاء نظرة على البرنامج يمكنك زيارة الموقع هنا

لدينا عدة ملفات كل ملف يحتوى على كلاس, قمت بإرفاق 4 كلاس وهى على النحو التالي

Sink.java

SinkList.java

KitchenSink.java

Info.java

Sink.java هو كلاس abstract وبداخله كلاس اخر اسمه SinkInfo

KitchenList.java هو ملف البرنامج الرئيسئ والذي يقوم بعملية الاستدعاء, هذا الكلاس يقوم بعملية import للكلاس Sink.SinkInfo , وفى نفس الوقت يقوم بعملية إستدعاء للكلاس Sink والكلاس Info و SinkList رغم انه لا يقوم بمعلية import لها..

الكلاس Info يقوم بعملية extends للكلاس Sink ويستخدم SinkInfo رغم انه لا يقوم بعملية Import

واخيراً الكلاس SinkList يقوم بعملية import للكلاس Sink.SinkInfo ثم يقوم بتعريبفها دون ان يقوم بعملية Implements .

السؤال الان هو متى نقوم بعمل Import وفى حالة عدم القيام بعمل Import كيف يعرف الكلاس A مكان وجود الكلاس B؟

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

Sink.zip

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

حاولت القرائة فى العديد من كتب الجافا ولكن للان لم اجد رد شافياً ربما تحتاج المسئلة لمن عنده خبرة فى البرمجة الكائنية..

للحصول على البرنامج بالكامل يمكنك تحميل النسخة الجديدة من gwt

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

تم تعديل هذه المشاركة بواسطة احمد غريب في 24 يوليو 2007 في 00:18

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#2

أخ أحمد غريب نكون أقدر على مساعدتك

لو ذكرت أرقام السطورالتي يتم فيها ما تسأل عنه

الله معك

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#3
اقتباس
لسؤال الان هو متى نقوم بعمل Import وفى حالة عدم القيام بعمل Import كيف يعرف الكلاس A مكان وجود الكلاس B؟

لاحظ ان الكلاسات Sink - SinkList - Info - KitchenSink جميعها موجودة في نفس الباكج لذلك اي استدعاء بين هذه الكلاسات لا يتطلب عملية import

لكن في حالة الكلاس SinkInfo فهو غير موجود معهم في الحزمة و لكن موجود ككلاس داخلي ( inner class ) في الكلاس Sink اذن فالوصول اليه عبر استعداء الكلاس Sink ثم استدعاءه

عملية ال import هنا للتسهيل بحيث عند استدعاء الكلاس SinkInfo يجب تحديد موقعه اي عند كل عملية استدعاء او تعريف يجب ان تكتب Sink.SinkInfo مثلا في كلاس SinkList سطر 84 هوا نفس السطر التالي اذا لم تقم بعملية الـ import

  Sink.SinkInfo info = (Sink.SinkInfo) sinks.get(i);

منقطع من حين لاخر

#4

جزاك الله خير اخي ابو الفؤاد الان اتضحت الصورة لدي ولي إن شاء الله عودة باسئله اخرى

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

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#5

السلام عليكم

لم استطع تشغيل الامثلة لعدم معرفتي كيفية وضع ال package

نزلت ال gwt-windows-1.3.3 وعملت استخراج لملف ال gwt-user.jar

وين ااضع مجلد com ? لكي يتم ايتدعء الكلاسات من الباكيج

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

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