هذه مجموعة مشاركات نشرتها السنة الماضية

سأعيد نشرها هنا للفائدة حيث وجدت قبل أيام عن أخ يسأل عن الـ OOP

نبدأ مع أول مشاركة :


البرمجة بمنهجية الأصناف والأشياء OOP

Object-Oriented Programming

سيكون هذا المقال على شكل عدة مشاركات بحسب الوقت المتاح

كلمة Object يقابلها بالعربي كائن أو شيء والشيء هو كل ما يمكن إدراكه أو تصوره سواء من خلال الحواس الخمس أو تخيله في الذهن

فأنت شيء وأنا شيء والتفاحة التي أكلتها آخر مرة شيء وحصان فلان الذي اشتراه منذ أيام شيء وسيارة جارك المرسيدس 300 ذات اللون الأسود شيء

و حاسب صديقك الذي يعمل عليه في الشركة نوع توشيبا شيء

إذا كل ما يمكن تخيله بمواصفات محددة هو شيء

أما أنا وأنت وأخي وأخوك وصديقك و ابن جيرانك كلهم من بني الإنسان فالإنسان هنا ليس شيء وإنما صنف يصف ماهية الأشياء

فالإنسان هو كائن له يدان و قدمان وطول معين واسم معين ولون شعر ولون عينان ولغة يتكلم بها وله هوايات معينة

كذلك السيارة هي آلة لها نوع معين وموديل معين وعدد مقاعد محدد و لون معين وسرعة قصوى

فالسيارة هي صنف يصف ماهية أي سيارة موجودة على أرض الواقع

دعنا نضرب مثال آخر للتوضيح

قررت البلدية وضع شروط معينة لأي بناء سيتم بناؤه في المنطقة المسؤولة عنها

فوضعت المواصفات التالي :

1 - عدد الطوابق الأعظمي 5

2 - المساحة الأعظمية 500 متر مربع

3 - وجود مساحة لا تقل عن 10 بالمئة مخصصة لصف السيارات

4 - وجود مصعد واحد على الأقل

نلاحظ أن هذه المواصفات ليس لها وجود وإنما هي مجرد وصف وهذا مانطلق عليه الصنف Class

وعلى فرض أن أحدهم أراد بناء مبنى موافق لهذه المواصفات

فيقوم بشراء مساحة أرض ولتكن 400 متر مربع

وقام ببناء 4 طوابق فقط

وجعل فيها مصعدان

وخصص 12% مساحة لمواقف السيارات

ثم أتم البناء

الآن يمكن القول أن هذا المبنى هو كائن تم إنشاؤه وفق صنف المبنى المعتمد من قبل البلدية

فالصنف وصف لمواصفات الكائنات التي يمكن إنشاؤها منه

أما الكائنات فهي أشياء حقيقية تم إنشاؤها وفق بنية الصنف وأخذت كل خاصية قيمة محددة

لهذا الصنف واحد والكائنات تتعدد وتختلف باختلاف القيم التي تحويها

خذ مثال الصنف إنسان

فكل شخص تعرفه سواء مات أم حي فهو كائن من صنف الإنسان وكل واحد منهم يحمل قيم مواصفات محددة

فالإنسان كما ذكرنا صنف له خصائص مثل الطول والاسم ولون العينان

ففلان من الناس اسمه سعيد وطوله 180 سم و لون عينdه بنية

كل هذه المقدمة حتى نستوعب الفرق بين الصنف والشيء أو الكائن أي بين Class و Object

وعندما سميت البرمجة كائنية التوجه بهذا الاسم جاءت لتجعل البرمجة وفق مفهوم الصنف والكائن من باب محاكاة ما ندركه في حياتنا

أما لماذا تم ابتكار هذا المنهج ؟

يمكن القول أن البرمجة OOP هي طريقة ومنهج تفكير برمجي دعت إليه الحاجة عندما ظهرت سلبيات البرمجة التقليدية (الإجرائية) بوضوح بعدما كبرت البرامج وتطلبت فرق عمل ومجموعات متباعدة

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

كان الأمر متيسرا من أجل البرامج البسيطة ومن قبل مبرمج واحد

ولكن تخيل أن هناك برنامج ضخم ويقوم به مجموعة من المبرمجين

كيف سيتم تنسيق أسماء المتغيرات والإجراءات فيما بينهم وتخيل عند الدمج كم نحتاج من وقت لتصحيح التعارضات

تخيل اجتماع أشخاص من عدة عوائل بدون معرفة اسم الأب أو العائلة كيف سيتم مناداة شخص اسمه محمد على فرض كان يوجد عشرة باسم محمد

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

يتبع ...

إن شاء الله