ما هي البرمجة كائنية التوجه؟ وماهي المبادئ الأساسية لها؟

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

تُعد البرمجة كائنية التوجه (OOP) مهارة أساسية في سوق عمل البرمجة اليوم. ولكن إذا كنت فقط ترغب البدء في تعلم أساسيات البرمجة ، فلا يجب أن تُخيفك.

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

ما هي البرمجة كائنية التوجه؟ وماهي المبادئ الأساسية لها؟ - شروحات

ولكن ما هي البرمجة كائنية التوجه ، وكيف تعمل ، ولماذا تحتاجها؟

ما هي البرمجة كائنية التوجه؟

ما هي البرمجة كائنية التوجه؟ وماهي المبادئ الأساسية لها؟ - شروحات

البرمجة كائنية التوجه (OOP) هي تصميم برمجة يستخدم البيانات لتمثيل مجموعة من التعليمات. يدور تصميم OOP حول فئات مُخصصة يُمكنك إنشاء مثيل لها ككائنات.

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

الطرق هي وظائف تُؤدي مُهمة مُحددة في الفئة. السمات هي مثل المُتغيِّرات التي تصف خصائص أو ميزات الفئة. يُمكن أن تعمل الطرق بشكل مُستقل أو في كثير من الأحيان بناءً على سمات الفئة. في النهاية ، يعمل كلاهما معًا لتحقيق مفهوم OOP.

مزايا البرمجة كائنية التوجه

إذن كيف تُساعدك البرمجة كائنية التوجه في كتابة برمجيات أفضل؟

  1. تُقلل OOP من تعقيد قاعدة تعليماتك البرمجية.
  2. تُساعدك على التعبير عن الكود بوضوح ، مما يجعله أكثر قابلية للقراءة بواسطة الآخرين.
  3. عادةً ما تكون البرمجيات المكتوبة بـ OOP أكثر قابلية للتوسع.
  4. يسهل اختبار التعليمات البرمجية وتصحيح الأخطاء.
  5. تُلغي OOP تكرار الكود ، وتُؤسس مبدأ DRY (لا تُكرر نفسك).
  6. غالبًا ما يكون كود OOP أكثر نمطية ، مما يشجع على فصل الاهتمامات.
  7. تكوين الفئة والوراثة تجعل الكود أكثر قابلية لإعادة الاستخدام.
  8. يُحسِّن التجريد أمان قاعدة التعليمات البرمجية.

عيوب البرمجة كائنية التوجه

في حين أنَّ مزايا OOP تفوق سلبياتها ، إلا أن الأخيرة لا تزال يستحق المُناقشة:

  1. يمكن أن تكون أبطأ من البرمجة الوظيفية.
  2. OOP لديها منحنى تعليمي حاد.
  3. تزداد مجلدات وملفات البرنامج النصي مع زيادة حجم التطبيق.

هيكل البرمجة كائنية التوجه

ما هي البرمجة كائنية التوجه؟ وماهي المبادئ الأساسية لها؟ - شروحات

تدور OOP حول بنية صارمة. إليك بعض المصطلحات التي ستعرفها:

الفئات

الفئة عبارة عن مجموعة من التعليمات البرمجية المُقدمة كبيانات تؤدي إجراءات مُماثلة. يُمكنك عرض فئة كمعالج كائن نظرًا لأنك تستخدم واحدًا لإنشاء مثيل للكائنات.

الطُرق

تحدد الطرق كيف تُحقق الفئة مهامها. يُمكن للفئة أن تحتوي على طريق واحد أو أكثر. يُمكنك عرض الطرق كطرق تُشارك فيها الفئة في المسؤوليات داخل نفسها.

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

السمات

السمات هي الوراثة — أو الخصائص — التي تصف فئة ما. قد تحتوي فئة محول الوحدات على سمات مثل وحدات التحويل ، على سبيل المثال. يُمكنك تحديد الطرق التي تعمل على هذه السمات.

مثل الطرق ، يُمكنك الوصول إلى (بعض) السمات من مثيل فئة.

الكائنات

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

مبادئ البرمجة كائنية التوجه

تُقدم البرمجة كائنية التوجه بعض المبادئ إلى جدول البرمجة. كل منها يُعطيها السبق على البرمجة التقليدية.

التجريد

ينص مفهوم التجريد في OOP على أنك لست بحاجة إلى معرفة كيفية عمل شيء ما لاستخدامه. حيث يُتيح لك الالتفاف على التعليمات البرمجية بكلمات بسيطة دون القلق بشأن التعقيدات الموجودة خلف الكواليس.

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

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

class_instance.convert_gram()

حيث يكون class_instance هو كائنك ، و convert_gram هو طريق لفئة المحول.

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

التغليف

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

بشكل عام ، يسمح لك التغليف بلف بيانات فصلك بشكل خاص في كائن. وبالتالي ، فإنَّ محتوى أحد العناصر لا يتعارض مع الآخر. ولا يُمكن تغييره إلا الأساليب والسمات المُتأصلة في الكائن.

على سبيل المثال ، يجب ألا تغير الأساليب من كائن محول الوحدات سمات كائن آخر بدون وراثة أو تكوين.

يسمح لك التغليف بتغيير محتوى الكائن أو هيكله دون القلق بشأن الواجهة العامة. فالتغليف يُساعد على التأكد من أنَّ المستخدم لا يستطيع أن يُغيِّر البيانات الداخلية لكائن بطريقة مُفاجئة ، فقط طرق الكائن الداخلية يسمح لها بتعديل حالة الكائن وبياناته. أي أنه لا يمكن التلاعب بالكائن وتغيير معلوماته بأي طريقة بل أن هناك واجهة استخدام خاصة يضعها المُبرمج ومن خلالها يُمكن تغيير بيانات الكائن الداخلية وحالته.

الوراثة

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

بالإضافة إلى الخصائص التي ترثها من الفئة العليا ، يُمكن أن يكون للفئة الفرعية أيضًا سماتها وطرقها الخاصة.

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

لذا فإنَّ إنشاء فئات فرعية يُوفر أيضًا الكثير من الوقت. بدلاً من إنشاء فئات جديدة لكل شيء ، يُمكنك إنشاء فئة أساسية وتوسيعها لتشمل فئات فرعية جديدة ، مع استعارة الوظائف الحالية.

الوراثة مفيدة ، ولكن معرفة متى يجب استخدام التركيب بدلاً منها هو مبدأ أساسي من مبادئ البرمجة.

تعدد الأشكال

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

يضمن هذا المفهوم أنه يمكنك استخدام طريقة الفئة ديناميكيًا في فئات مُختلفة ترثها من فئة أساسية.

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

مقارنة بين البرمجة كائنية التوجه و البرمجة الوظيفية

تحظى OOP بشعبية كبيرة ، لكن المُبرمجين لا يزالون يستخدمون العديد من نماذج البرمجة الأخرى ، اعتمادًا على احتياجاتهم. تختلف البرمجة الوظيفية تمامًا عن OOP:

  1. البرمجة الوظيفية تتعامل مع التعليمات في وظائف مُخصصة. من ناحية أخرى ، تُقدم OOP الإرشادات كبيانات مخزنة في الكائنات.
  2. في البرمجة الوظيفية الحقيقية ، يكون ناتج الوظيفة دائمًا هو نفسه وغير قابل للتغيير. تسمح OOP بتعدد الأشكال ، والبيانات التي يتم إرجاعها قابلة للتغيير في الفئات الأخرى.
  3. OOP أكثر قابلية للتوسع حيث يُمكنك بسهولة توسيع الكائنات.
  4. يجعل التجريد من البرمجة كائنية التوجه أكثر أمانًا نظرًا لأنَّ الشخص الخارجي لا يعرف الإجراءات وراء الكواليس. يُمكن أن تكشف البرمجة الوظيفية عن بعض الطبقات.
  5. على الرغم من أنَّ OOP يمكن أن تكون مُعقدة ، إلا أنها أكثر قابلية للصيانة من البرمجة الوظيفية. لا تزال البرمجة الوظيفية تحتفظ ببعض السمات الإجرائية.
  6. يُمكن أن تكون البرمجة الوظيفية أسرع من خلال وصول البرامج إلى التعليمات دون مراعاة التسلسل الهرمي للكائنات. يُعد التسلسل الهرمي للكائن ضروريًا عند العمل مع التطبيقات باستخدام البرمجة كائنية التوجه.

تحقق من أفضل الطرق السهلة للحصول على تجربة SQL قبل وظيفتك الأولى.

حان الوقت لتكون كائني التوجه

قد يكون من الصعب فهم مفهوم البرمجة كائنية التوجه في البداية. ولكن يصبح الأمر أكثر وضوحًا بمجرد أن تبدأ في كتابة التعليمات البرمجية غرضية التوجه.

تذكر أننا ناقشنا العموميات فقط في هذه المقالة. في حين أنَّ مفهوم OOP متشابه في جميع المجالات ، فإن كل لغة موجهة للكائنات لها مراوغاتها وطرقها لتحقيق الأشياء. بمجرد اختيار اللغة الصحيحة ، ستبدأ في معرفة كيفية تطبيق مبادئ OOP. يُمكنك الإطلاع الآن على ما هي البرمجة التركيبية في Unity ولماذا هي مُهمة؟

زر الذهاب إلى الأعلى