أتمنى التناقش للخروج بأفضل نتيجة.

  • هذه ليست تدوينة بل دعوة للتناقش.

  • هذه جزء من سلسلة.



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

هي نوع من أنماط البرمجة، لا تختلف كثيرًا عمَّا قد عَهدته أثناء تعلمك لأساسيَّات بايثون!. ما هي إلَّا تكريس لِما تعلَّمته بهدف جعل برامجك أسهل للتطوير والتحديث وَجعل كتابتك لِلشِفرات أنقى.

تعتمد على مفاهيم أساسيَّة هي الصنف class (البعض يحب تسميته «فئة») وَالكائنات objects الَّتي تقع ضمن تصنيف ذلك الصنف وَبالتالي تملك صفاته attributes الأساسيَّة المُشتركة بين كائنات الصِّنف الواحد لكن كلّ كائن يختلف عن الآخر بصفات وَوسائل methods (إسمٌ آخر يُطلق على الدوال لكنَّه مُخَصَّص للدوال الَّتي داخل تعريف الصنف!). فنلاحظ أنَّ الأصناف هي أداة تغليف لإزالة التعقيد في برنامجك وجعله أكثر مرونة وسلاسة. ولجعل فضاء الأسماء namespace العام لبرنامجك أنظف. وأيضًا لجعل برنامجك سهل القراءة والفَهم ولاحقًا سهل التطوير.

هذا ما يجب أن تدركه للآن، أعي وجود أسئلة بزغت في ذهنك الآن بعد ما قرأت لكن لا تتعجَّل فسيتم شرح الأمور بالتدريج.


أنت تتعامل مع البرمجة كائنيَّة التوجُّه منذ بداياتك مع بايثون!

منذ نشأة لغة بايثون لِلبرمجة وَالإعلان عنها في عام ١٩٩١ من قبل جايدو ڤان روسّم (كاتب اللُّغة)، وَفَّرت مفاهيم البرمجة كائنيَّة التوجُّه في بُنيتها النحويَّة فكان ذلك المزيج الرَّائع من البرمجة الإجرائيَّة functional وَالكائنيَّة objective.

منذ أوَّل درس لك مع بايثون، أنت تتعامل مع الأصناف دون أن تشعر!. فباستخدامك للسلاسل النصيَّة في طباعة «أهلًا بالعالم» "Hello World" أنت استخدمت الصنف: str وَلِأكون دقيقًا فقد استخدمت الوسيلة السِحريَّة/الخاصَّة magical/special الخاصَّة بالصنف؛ str().__str__() (ليس مثالًا دقيقًا!، لكنه من أجل توضيح الفكرة للآن). غريب، أليس كذلك؟


للإستزادة، ولمن يرغب بمزيد من التوضيح. تفقد التالي:

https://io.hsoub.com/go/7387

بعض مِمَّا استفدت منه في الكتابة:

https://ar.m.wikipedia.org/...
https://io.hsoub.com/go/43161