الحزم في Java
ضع الفئة Bell في مجلد اسمه kit مع السطر الأول package kit; ومتد static اسمه ring() يطبع ding. في Lobby.java بجانب ذلك المجلد — لا داخله — استدعِ من main السطر kit.Bell.ring();. ترجم من المجلد الأب ونفّذ java Lobby. يجب أن تظهر الشاشة سطرًا واحدًا: ding. اسم الحزمة واسم المجلد متطابقان. الاستدعاء بـ kit.Bell في الأمام هو ما تعلّمه هذه الصفحة. اترك كلمة import للصفحة التالية.
اسم مجلد تعلنه الملف
حتى الآن جلست كل فئة في مجلد مسطح واحد. الحزمة تجمع الفئات تحت اسم مجلد. يجب أن يقول السطر الأول من الملف ذلك الاسم: package kit;. يجب أن يعيش الملف Bell.java داخل مجلد اسمه kit. إذا اختلف المجلد وسطر الحزمة، يشتكي javac.
أنشئ المجلد kit أولًا. داخله أنشئ Bell.java. السطر الأول هو package kit;. ثم سطر public class هو public class Bell. لا تُبقِ اسم فئة قديمًا Gate أو Tag هنا. اكتب متدًا static واحدًا:
public static void ring() { System.out.println("ding"); }
ضع public على المتد حتى تستطيع فئة خارج الحزمة استدعاءه. لا يوجد main في Bell.java. احفظ قبل الترجمة.
package kit;
public class Bell {
public static void ring() {
System.out.println("ding");
}
}
Lobby يستدعي kit.Bell.ring
أنشئ Lobby.java في المجلد الأب — في مستوى مجلد kit نفسه، لا داخله. سطر public class هو public class Lobby. داخل main اكتب kit.Bell.ring();. لا تكتب import kit.Bell; على هذه الصفحة. الاسم الكامل kit.Bell يكفي للاستدعاء.
أبقِ Lobby الفئة التي تحمل main. لا تضع main داخل Bell لهذا الدرس. إذا بقي ملف Pier من صفحة الوصول قريبًا، لا تشغّل java Pier لهذا الدرس — نفّذ java Lobby بعد الترجمة من المجلد الأب.
public class Lobby {
public static void main(String[] args) {
kit.Bell.ring();
}
}
من المجلد الأب الذي يحوي Lobby.java ومجلد kit معًا، نفّذ javac kit/Bell.java Lobby.java. على Windows يمكن أن يكون الشرطة المائلة kit\Bell.java بنفس الفكرة — وجّه javac إلى الملف داخل مجلد الحزمة، ثم إلى Lobby.java. عندما تتطابق الأقواس والدعامات والفواصل المنقوطة، لا يكتب javac سطرًا من عنده. ثم نفّذ java Lobby — لا java Lobby.java، ولا java kit.Bell. احذف نهاية .java من أمر التشغيل. ابدأ الفئة التي تحمل main. الأوامر نفسها تعمل على Windows وعلى macOS حين تطابق المسارات صدفتك.
يجب أن يطبع البرنامج سطرًا واحدًا ويتوقف: ding. لا يطلب منك الكتابة. إذا انتظر الطرفية إدخال لوحة المفاتيح، فما زال استدعاء nextLine من تمرين أقدم في أحد الملفات. احذف ذلك الاستدعاء وأبقِ kit.Bell.ring(); في Lobby، مع package kit; في Bell.
امشِ التشغيل مرة. تبدأ Java من Lobby.main. الاستدعاء kit.Bell.ring() يجد الفئة Bell في الحزمة kit ويشغّل المتد static. يطبع الجسم ding. تظهر الشاشة ding. لا يجب أن يطبع شيء آخر. إذا رأيت 9 أو ok، فما زلت تشغّل برنامج Pier أو Yard قديمًا من صفحة سابقة.
إذا جلس Bell.java بجانب Lobby.java بلا مجلد kit بينما الملف ما زال يقول package kit;، يرفض javac. انقل الملف إلى داخل kit. إذا استدعيت Bell.ring(); بلا kit. من خارج الحزمة، لا يرى javac الاسم القصير على هذه الصفحة — أبقِ kit.Bell.ring();. اسم الحزمة جزء من الاسم الكامل للنوع حتى تعلّم الصفحة التالية import.
المجلد وسطر الحزمة جنبًا إلى جنب
جدول قصير واحد يبقي التطابق واضحًا.
📊 folder vs package line
| القطعة | على هذه الصفحة |
|---|---|
| اسم المجلد | kit |
| السطر الأول في Bell.java | package kit; |
| الاستدعاء من Lobby | kit.Bell.ring(); |
| import | ليس على هذه الصفحة — الدرس التالي |
الجدول تذكير فقط. القطع التي تبقيها هي package kit; في ملف Bell، ومسار الملف تحت kit، وkit.Bell.ring(); في Lobby. |
مقارنة مع الوصول ومع مجلد مسطح
على صفحة الوصول، شاركت Gate وPier مجلدًا واحدًا بحقل private. ذلك ما زال يعمل. هذه الصفحة تضيف مجلد حزمة وسطر حزمة. عرض متبقٍ Gate g = new Gate(9); g.show(); درس مختلف. لهذه الصفحة أبقِ kit/Bell.java وLobby.java وkit.Bell.ring();.
ما زال بإمكانك استخدام مجلدات مسطحة لعروض صغيرة جدًا. هذا الدرس يختار حزمة حتى ترى الاسم أمام الفئة. لا تخلط g.show() وkit.Bell.ring() في نفس عرض Lobby على هذه الصفحة. مسار واحد واضح يكفي: سطر حزمة، مجلد مطابق، استدعاء كامل من Lobby.
ترجم من الأب، لا من داخل kit وحده
ابقَ في المجلد الأب حين تترجم وحين تشغّل java Lobby. إذا دخلت بـ cd إلى داخل kit وحاولت تشغيل Lobby من هناك بلا إصلاح قصة classpath، ينكسر مسار الدرس القصير. أبقِ الأب مجلد عملك لهذه الصفحة. يجب أن يظهر ملف .class لـ Bell تحت kit بعد ترجمة جيدة، بجانب Bell.java.
إذا أظهرت الشاشة 9 أو ok، فما زال برنامج Pier أو Yard قديمًا يعمل. انتقل إلى java Lobby. إذا لم يجد javac الفئة kit.Bell، افحص إملاء اسم المجلد وسطر package kit; حرفًا بحرف.
ما يبقى لـ import
هذه الصفحة تكتب الاسم الكامل kit.Bell في كل استدعاء. صفحة لاحقة — import — تُظهر كيف يسمح import kit.Bell; بكتابة الاسم القصير Bell في Lobby. ابقَ هنا مع الاسم الكامل. لا تخترع import على هذه الصفحة إلا إن كنت تعرفه مسبقًا؛ هدف الدرس مجلد الحزمة وkit.Bell.ring();.
حين تبقى ملفات قديمة Gate.java أو Pier.java في المجلد الأب، اتركها أو احذفها فقط إن أربكت أمر الترجمة. نفّذ java Lobby بعد ترجمة زوج الحزمة من هذا الدرس.
قبل import
يمكنك وضع Bell.java تحت المجلد kit مع package kit; وpublic static void ring() الذي يطبع ding، ومن Lobby استدعاء kit.Bell.ring(); بلا import. ترجم من المجلد الأب ونفّذ java Lobby. تظهر الشاشة ding. تطابق اسم الحزمة مع المجلد. الصفحة التالية هي import، حيث يكفي الاسم القصير بعد سطر import.
أبقِ package kit; السطر الأول في Bell. أبقِ الملف داخل kit. أبقِ الاستدعاء kit.Bell.ring();. هذه العادات الثلاث هي نقطة التحقق لهذه الصفحة قبل أن تنتقل. حين تظهر الشاشة ding من المجلد الأب، يكون تخطيط الحزمة يؤدي عمله لهذا الدرس.
🧠 اختبر معرفتك
اختبر معرفتك
تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع
📝 التعليمات
- اقرأ كل سؤال بعناية
- اختر أفضل إجابة لكل سؤال
- يمكنك إعادة الاختبار عدة مرات كما تريد
- سيتم عرض تقدمك في الأعلى