التجريد في البرمجة Abstraction

اقرأ في هذا المقال


يعد التجريد أحد المفاهيم الأساسية للغات البرمجة الشيئية (OOP)، هدفه الرئيسي هو التعامل مع التعقيد عن طريق إخفاء التفاصيل غير الضرورية عن المستخدم، يمكّن ذلك المستخدم من كتابة كود أكثر تعقيدًا دون فهم أو حتى التفكير في كل التعقيدات الخفية، هذا مفهوم عام للغاية ولا يقتصر على البرمجة الشيئية، يمكنك أن تجده في كل مكان في العالم الحقيقي.

التجريد في العالم الحقيقي:

يعد صنع القهوة باستخدام آلة القهوة مثالًا جيدًا على التجريد، فأنت بحاجة إلى معرفة كيفية استخدام آلة القهوة الخاصة بك لصنع القهوة، تحتاج إلى توفير الماء وحبوب القهوة وتشغيلها واختيار نوع القهوة التي تريد الحصول عليها، الشيء الذي لا تحتاج إلى معرفته هو كيف تعمل ماكينة القهوة داخليًا لتحضير فنجان من القهوة الطازج، لا تحتاج إلى معرفة درجة الحرارة المثالية للماء أو كمية البن المطحون الذي تحتاج إلى استخدامه.

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

التجريد في البرمجة:

توفر لغات البرمجة الشيئية فكرة التجريد والتي تخفي تفاصيل التنفيذ الداخلية، على غرار آلة القهوة في مطبخك، تحتاج فقط إلى معرفة دالة الكائن (object) المتاحة لإستدعائها والمعلمات الإدخال المطلوبة لبدء عملية معينة، لكنك لست بحاجة إلى فهم كيفية عمل كود هذه الدالة أو أنواع الإجراءات التي يتعين عليها تنفيذها لإنشاء النتيجة المتوقعة.

ما هو الكلاس المجرد Abstract Class؟

الكلاس المجرد هو نوع من الكلاسات في (OOPs)، والتي تُعّرف دالة مجردة واحدة أو أكثر، يمكن أن تحتوي هذه الكلاسات على دالة مجردة بالإضافة إلى الدوال غير المجردة، لا يمكن أن تحتوي الكلاسات العادية على دوال مجردة، والكلاس المجرد هو كلاس يحتوي على دالة مجردة واحدة على الأقل.

ما هي الدوال المجردة Abstract Methods؟

الدالة المجردة هي دالة لها تعريف الدالة فقط ولكنها لا تحتوي على التنفيذ (أي لا تحتوي على “Body”، فارغة)، وتُعرف الدالة البدون جسم بالطريقة المجردة، ويجب أن تُعرّف في الكلاس مجرد، لن تكون الدالة مجردة “final” أبدًا؛ لأن الكلاس المجرد يجب أن ينفذ جميع الدوال المجردة.

متى تستخدم الدوال المجردة والكلاسات المجردة؟

يتم تعريف الدوال المجردة في الغالب عندما يقوم كلاسان فرعيان (subclasses) أو أكثر بنفس الشيء بطرق مختلفة من خلال تطبيقات مختلفة، فإنهما يشتقان نفس الكلاس المجرد، ثم يقومان بعمل كودان مختلفان للدوال المجردة، تساعد الكلاسات المجردة على وصف السلوكيات العامة والتسلسل الهرمي لكلاسات في البرمجة الشيئية.

الفرق بين التجريد والتغليف:

التجريد Abstractionالتغليف Encapsulation
التجريد هو عملية أو طريقة الحصول على المعلومات.بينما التغليف هو العملية أو الطريقة لاحتواء المعلومات.
يحل التجريد في البرمجة الشيئية المشكلات على مستوى التصميم.بينما يحل التغليف المشكلات على مستوى التنفيذ.
يتعلق التجريد في البرمجة بإخفاء التفاصيل غير المرغوب فيها وعرض المعلومات الأكثر أهمية.في حين أن التغليف هو طريقة لإخفاء البيانات في كيان واحد أو وحدة إلى جانب طريقة لحماية المعلومات من الخارج.
يمكننا تنفيذ التجريد باستخدام الـ (classes) والواجهات المجردة.في حين يمكن تنفيذ التغليف باستخدام معدِّلات الوصول (أي خاص ومحمي وعام).
في التجريد، يتم إخفاء تعقيدات التنفيذ باستخدام الـ (classes) وواجهات مجردة.بينما في التجريد، يتم إخفاء البيانات باستخدام دوال مثل “getters ” و “setters”
يتم عمل تغليف للكائنات (objects) التي تساعد على إجراء التجريد.بينما الكائنات التي ينتج عنها التغليف لا داعي لتكون ناتجة عن تجريد.

الفوائد الرئيسية للتجريد:

  • تفاصيل التنفيذ الكلاس محمية من الأخطاء غير المقصودة على مستوى المستخدم.
  • لا يحتاج المبرمج إلى كتابة كود ذات المستوى المنخفض.
  • يتجنب تجريد البيانات تكرار الكود، أي لا يتعين على المبرمج الخضوع لنفس المهام في كل مرة لإجراء عملية مماثلة.
  • الهدف الرئيسي من التجريد هو إعادة استخدام الكود، والتقسيم الصحيح للكود عبر الكلاسات.
  • يمكن تغيير التنفيذ الداخلي بشكل مستقل دون التأثير على كود “مستوى المستخدم”.
  • يساعد التجريد على زيادة أمان تطبيق أو البرنامج، حيث يتم توفير التفاصيل المهمة فقط للمستخدم.

المصدر: ?OOP Concept for Beginners: What is AbstractionDifference between Abstraction and EncapsulationWhat is Abstraction in OOPs? Java Abstract Class & Method++Data Abstraction in C


شارك المقالة: