التغليف والتعميم

التغليف (أو الكبسلة) يعني عادة أخذ جزء من الشفرة ولفـُّه في عملية، ما يسمح لك بالاستفادة من مزايا كل الأشياء التي تفيدنا العمليات فيها. قد رأينا مثالين عن التغليف، عندما كتبنا printParity في القسم 4.3 وisSingleDigit في القسم 5.7.
التعميم يعني أخذ شيء مخصص، مثل طباعة جدول ضرب الاثنين، وتعميمه أكثر، مثل طباعة جدول الضرب لأي عدد صحيح.
إليك عملية تغلف الحلقة من القسم السابق وتعممها لتطبع جدول الضرب للعدد n.
كود:
public static void printMultiples (int n) {
  int i = 1;
  while (i <= 6) {
    System.out.print (n*i + " ");
    i  = i + 1;
  }
  System.out.println ("");
}
لتغليفها، كل ما كان علي فعله هو إضافة السطر الأول، الذي يصرح عن الاسم، المعامل، ونوع الإرجاع. للتعميم، كل ما كان علي فعله هو استبدال القيمة 2 بالمعامل n.
إذا استدعيت هذه العملية باستخدام المتحول 2، فسأحصل على نفس الخرج السابق. وباستخدام المتحول 3، سيكون الخرج كما يلي:
3 6 9 12 15 18
مع المتحول 4، سيكون الخرج كما يلي
4 8 12 16 20 24
ستتمكن على الأغلب من تخمين الطريقة التي سنطبع بها جدول الضرب الآن: سنستدعي printMultiples بشكل متكرر مع المتحولات المختلفة. في الواقع، سنستخدم حلقة أخرى لتكرر العملية على السطور.
كود:
int i = 1;
while (i <= 6) {
  printMultiples (i);
  i = i + 1;
}
قبل كل شيء، لاحظ الشبه بين هذه الحلقة وبين الحلقة الموجودة داخل printMultiples. كل ما فعلته هو استبدال تعليمة الطباعة باستدعاء لعملية.
خرج البرنامج سيكون كالتالي
1 2 3 4 5 6
2 4 6 8 10 12
3 6 9 12 15 18
4 8 12 16 20 24
5 10 15 20 25 30
6 12 18 24 30 36
وهو يمثل جدول الضرب (مع أنه مضطرب قليلاً). إذا أزعجك عدم ترتيب الجدول، فإن Java توفر عمليات تعطيك المزيد من التحكم بتنسيق الخرج، لكنني لن أخوض في الحديث عنها هنا.