مجموعات ورق الشدة والمجموعات الفرعية
هذا هو النموذج الأولي للعملية findBisect:
كود:
public static int findBisect(Card[] deck, Card card, int low, int high)
يمكننا اعتبار cards، وlow وhigh كمعامل وحيد يمثل مجموعة فرعية (subdeck). هذه الطرقة في التفكير شائعة جداً، وأحياناً أعتبرها كمعامل مجرد (abstract parameter). ما أعنيه بكلمة "مجرد"، هو شيء ليس جزءاً من نص البرنامج بشكل فعلي، لكنه يصف عمل البرنامج على مستوى أعلى.
مثلاً، عندما تستدعي عملية وتمرر لها مصفوفة وlow وhigh اللذان يمثلان الحدود، لا يوجد شيء يمنع العملية المستدعاة من الوصول إلى أجزاء المصفوفة الواقعة خارج النطاق المعطى. لذا فأنت فعلياً لا ترسل مجموعة فرعية من مجموعة الورق؛ بل ترسل المجموعة كاملة. لكن طالما أن المستقبِل يلعب وفق القواعد، فمن المعقول أن تعتبرها مجموعة فرعية، بشكل مجرد.
هذا النمط من التفكير، الذي يعطي البرنامج معنى أبعد مما هو مكتوب فعلياً، جزء مهم من أسلوب التفكير كعالم كمبيوتر.
لقد استخدمت الكلمة "مجرد" في العديد من الأماكن حتى كادت تفقد معناها. مع ذلك، فالتجريد فكرة مركزية في علوم الحاسوب (والعديد من المجالات الأخرى).
لتعريف "التجريد" بشكل أكثر عمومية نقول "هو عملية قولبة لنظام معقد باستخدام وصف مبسط للتخلص من التفاصيل غير الضرورية والحصول على سلوك مناسب".