17

[سؤال] لمن لايعرف مفهوم البرمجة الكائنية أو يعاني من قلة المحتوى العربي في شرحها.

في Youtube وجدت شروحات عربية كثيرة تحكي عن البرمجة الكائنية. ولكن غالبها ليس ذا فعالية. حيث يعرف المستفيد كيفية كتابة Class ولكن لايعرف بالضبط لماذا يكتب Class. رغم ان منطق البرمجة الكائنية اسهل من البرمجة الاجزائية للفهم والتعامل.

فسؤالي هو، هل تعرف تكتب صنف (Class) ولكن لاتعرف لمَا تكتب Class وكيف استخدمت المشاريع الكبيرة منطق البرمجة الكائنية أم أنك لاتعرف شيئاً عن البرمجة الكائنية ؟


12

تعلمت المفهوم الصحيح من التدقيق فى الكلمات .. فكلمة class تعنى تصنيف .. إعتبرت أن الأصناف هى الكائنات الحية و أن أحد الأصناف هو الإنسان مثلاً ..

الإنسان كتصنيف أو كفصيل (class) .. له خصائص (properties) .. مثل الطول و العمر و اللون ... و له وظائف (functions) مثل النوم و العمل و الأكل


و الكلمة الأخرى هى object يعنى كائن حقيقى له إسم ووجود من ضمن هذا الفصيل .

و من ثم فإننى من الممكن أن أقول أن ( راشد ) كائن من النوع ( إنسان )

يكون لـ (راشد) كل ما للـ (إنسان) من خصائص ووظائف ..... و يمكن أن نضيف له أشياء إضافية أخرى .. كأن يرتدى نظاره أو يمتلك سيارة


الوراثة شبيهة بالمعنى الحقيقى للوراثة الذى نعرفه فى حياتنا العادية و هى أن يقول لك لقد ورث الشاب صفة الطول و الذكاء من والده مثلاً .

فهنا .. يمكن لفصيل أن يرث فصيل آخر ... و يكن له كل ما له ... بالإضافة إلى أن هذا الفصيل الذى يرث يمكن أن تضيف له خصائص و وظائف غير موجوده فى الفصيل الآخر ... لهذا عند صنع object من الفصيل الثانى يكون أقوى و أكثر فى خصائصه من الفصيل الأول .


التجرد abstraction .. أن يكون لديك أحد الوظائف فى الكلاس متروكه بدون تحديد .. فنقول مثلاً فصيل الإنسان له وظفية المشى و لكن لا نحدد كيف

من ثم لا يمكننا إنشاء object من هذا الكلاس مباشرة لأنه غير محدد بعض الوظائف و لكى نحل هذا ..

نقوم بعمل وراثة لهذا الكلاس و نحدد فيه طريقة المشى ..

كأن نقوم مثلاً بعمل كلاس يعبر عن الطفل ... class baby extends human ... و نحدد فيه أن طريقة المشى تكون بأيديه و رجليه .

و كذلك يمكننا أن نقوم بعمل كلاس يعبر عن العجوز .... class oldman extends human ... ونحدد فيه أن طريقة المشى على رجليه و عصا .

و التجرد شبيه بال interface و هما مفيدان جداً فى عالم الألعاب حيث لديك مثلاً فى لعبة كرة القدم .. لديك اللاعبين و الجمهور و الحكام و كل لاعب و كل مشجع و كلم حكم يكون له بعض الأفعال و الصفات التى تميزه عن الآخر .


لماذا الوراثة مفيده .. لأنها ترحمنى من إعادة كتابة كافة الكود الموجود فى ال class الرئيسى مرات عديده .

هذا مفهوم مبسط لبعض المعانى الموجوده فى ال OOP تشرح نفسها ولكنها تحتاج إلى من يركز قليلاً .

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