السلام عليكم
بعد ان تقطعت بي السبل وحاولت ان اجد حل قررت اللجوء اليكم فى هذا السؤال الذي قض مضجعي وحيرني..
السؤال هو فى برنامج 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 فى بعض الحالات مع العلم ان البرنامج احترافي ولا اعتقد ان تكون غلطة ومكررة فى العديد من الكالاسات..
بالطبع البرنامج يحتوى على العديد من الكلاسات ولكن اغلبها متشابهه معى الكلاس Info. فهى مجرد سفحات يتم اضافتها ...
حاولت القرائة فى العديد من كتب الجافا ولكن للان لم اجد رد شافياً ربما تحتاج المسئلة لمن عنده خبرة فى البرمجة الكائنية..
للحصول على البرنامج بالكامل يمكنك تحميل النسخة الجديدة من gwt
والسلام عليكم
