الإجابة على : مالفائدة من الكلاسات إذا كانت الدوال تؤدي الغرض ؟
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته .. وتحية طيبة للجميع وبعد.
جاءني سؤال على بريدي يقول : مالفائدة من الكلاسات إذا كانت الدوال تؤدي الغرض ومتى أستخدم كل منهما ؟ من أحد الأعضاء في سوالف و فضلت الإجابة عليه من خلال المنتدى لتصل الفائدة للجميع وإليكم التوضيح الذي أسأل الله جل وعلا أن يكتب أجره لوالدي رحمه الله تعالى .
دعنا نجيب عن هذا السؤال بالتفصيل كالتالي :
الدوال
من المعروف أن الدالة يكتب فيها شفرة معينة ويتم تنفيذ هذه الشفرة عدة مرات عن طريق استدعاء الدالة وهذه الطريقة توفر الجهد وتوفر علي كتابة الكود .
الكلاسات
من المعروف أن الكلاس هو عبارة عن مجموعة من المتغيرات والدوال .
----------------------------------------------------
من أهم النقاط التي جاء بها مفهوم الكلاسات هو التنظيم والترتيب أو بكلام أخر تنظيم الكود البرمجي على شكل وحدات صغيرة يتم تمثيلها بالكلاسات أي أن كل وحدة يتم تمثيلها بكلاس معين وفي الأخير يتم تمثيل البرنامج على أنه وحدة واحدة ولكنه في الواقع هو عبارة عن مجموعة من الكلاسات .
ولكن مالفائدة من هذا الكلام ؟
دعنا نلاحظ المثال التالي :
لوكان لدينا برنامج اسمه X وهو مثلاً برنامج لإدارة المقالات ويحتوي هذا البرنامج على 5 كلاسات بداخله والتي يتكون البرنامج منها ولنفرض ان هذه الكلاسات هي كالتالي :
1- كلاس A وهو خاص بقواعد البيانات.
2- كلاس B وهو خاص بمحرك القوالب .
3- كلاس C وهو خاص بالسيشن .
4- كلاس D وهو خاص بالـ PDF .
5- كلاس E وهو خاص بتأثيرات الفلاش .
و الآن ما نريد ملاحظته هو أن البرنامج X يعمل كوحدة واحدة تمثل برنامج مقالات ولكن كل كلاس يقوم بالعملية الخاصة فيه دون التدخل في شأن الكلاسات الأخرى والآن لاحظ النقطة المهمة في عالم هندسة البرمجيات الا وهي تصحيح الأخطاء.
النقطة الأولى : لو ظهر خطأ مثلاً في الكلاس D والخاص بالتعامل مع الـ PDF فعندها لن تقوم بتعديل كامل البرنامج ولن تلمس أي كود في الشفرات الخاصة بالبرنامج لأن قواعد البيانات تعمل و محرك القوالب يعمل وكلاس السيشن يعمل وتأثيرات الفلاش تعمل وكل ماعليك القيام به الآن هو الذهاب وتعديل بعض الأمور في كلاس D الخاص بالـ PDF ليعود البرنامج كما كان في وقت قصير جداً دون تعديل الكثير من الشفرات وهذه الخاصية أو الميزة تحسب لصالح مفهوم الكائنات و الكلاسات .
النقطة الثانية : والتي يجب الإنتباه لها هي ما يسمى بـ Reusability أو إعادة الإستخدام ولتوضيح هذه الفكرة بشكل مفصل دعنا نقول الآن أننا نريد بناء برنامج جديد اسمه Y وهو عبارة عن سكربت اخبار مثلاً عندها ستكون العملية اسهل من ذي قبل لأنني سأعيد استخدام الملفات السابقة التي تم استخدامها في البرنامج X أي من الممكن أن أستخدم جميع الكلاسات أو بعضها ولنقل الآن اننا نريد استخدام الكلاس الخاص بقواعد البيانات والكلاس الخاص بالقوالب عندها فقط سنقوم بإستخدام الكلاسات الجاهزة في البرنامج الجديد بأخذ نسخة مثلاً من ملف db.php وملف template.php والتي على سبيل المثال تمثل اسماء ملفات الكلاسات وبهذا وفرت علي الجهد والوقت وهذا مايسمى بنظرية اعادة الإستخدام .
النقطة الثالثة : وهي تطوير البرنامج وللتوضيح دعنا نقول أنك اردت ان تطور البرنامج X بإضافة نشر المقالات في الفيس بوك وقمت بإضافة كلاس جديد للبرنامج اسمه F خاص بالنشر على الفيس بوك عندها لن تحتاج إلى لمس اي من الكلاسات السابقة بل كل ماعليك فعله هو اضافة الكلاس F في البرنامج ليستطيع البرنامج نشر المقالات على الفيس بوك بدون لمس قواعد البيانات أو الـ PDF أو غيرها وفي حالة اردت إلغاء هذه الخاصية فإن كل ماعليك فقط هو حذف الكلاس ومسح الشفرات الخاصة بهذا الكلاس وعندها لن يتضرر ايضاً اي من الكلاسات السابقة أي بإختصار في التطوير والتعديل والحذف فإن البرنامج لن يتضرر.
النقطة الرابعة : هي المشاركة حيث يقوم المبرمجين بتطوير كلاسات مختلفة ونقلها فيما بينهم ممايساعد المطورين والمبرمجين على تطوير برامجهم بسرعة عالية لأنك لن تضطر لكتابة كل شئ من الصفر وعلى سبيل المثال لو قلنا أن فلان من الناس قام بتطوير كلاس يساعدك على إرسال رسائل إلى تويتر عندها فقط يمكنك أخذ هذا الكلاس وإضافته لبرنامج X وجعلها يرسل عناوين المقالات إلى تويتر ولاحظ أنك قمت بإضافة هذه الخاصية بسرعة عالية جداً دون كتابة أكواد بل ربما يمكنك إنهاء النسخة الجديدة من البرنامج X وتطويرها في يوم واحد فقط وهذا يسمى بـ Sharing Library أو المكتبات التي يتم مشاركتها في العديد من البرامج .
النقطة الخامسة : هي تقليل الكود وأكبر دليل على هذا الكلام هو عند كتابة برنامج إدارة محتوى حيث أن برامج إدارة المحتوى تحتوي على برامج عديدة مثل الأخبار والمقالات والدروس وغيرها .. وعندها كل ما عليك فعله هو عمل مجلد واحد فقط للكلاسات و استدعاء نفس الكلاسات في البرامج المختلفة وهذا يساعد على تقليل الكود المستخدم في البرامج المختلفة ويساعد ايضاً على تقليل مشاكل التعديل التي سبق ذكرها .
هل هذا الكلام يعني أن الدوال غير مفيدة ؟
هذا الكلام غير صحيح والسبب هو أن الكلاسات اصلاً تقوم على الدوال ولكن من أفضل الحالات التي يكون فيها استخدام الدوال افضل من الكائنات هو حالات "تضارب الإصدارات" و للتوضيح أكثر عندها دعنا نقول ان هناك مشاكل عديدة في اصدارات PHP4 عند التعامل مع الكلاسات وعند كتابة كلاس مثلاً على PHP5 وهذا الكلاس مثلاً قمنا فيه بإستخدام جميع الخصائص الجديدة التي جاءت مع PHP5 عندها لن نستطيع استخدام هذا الكلاس في السيرفرات التي تحتوي على الإصدار الرابع وبهذه الطريقة فإن الدوال تكون أنسب في هذه الحالة لأنها ستعمل على الإصدارين بدون مشاكل و المثال المشهور على هذه الحالة هي مدونة وورد بريس فهي تستخدم دوال تبدأ بـ wp_ و هي تعمل كـ API وهي تعمل في اصدارات بي اتش بي بدون مشاكل مع ان وورد بريس تحتوي على كلاسات ايضاً.
خلاصة القول
إن استخدام الكلاسات يجعل البرنامج اكثر تنظيماً من ذي قبل ويسهل عليك العديد من الأمور ويوفر عليك الكثير من الجهد وبتعديل كلاس واحد فقط عندها لن تحتاج لتعديل كامل البرنامج وهذا يسرع عملية التطوير وفي حالة قمت بتطوير كلاس جديد فإن عملية إضافته للبرنامج تكون سهلة .
وفي الأخير أرجوا أن أكون قد وفقت في الإجابة على السؤال وأرجوا ممن وجد الفائدة أن يدعوا لوالدي رحمه الله تعالى وأسكنه فسيح جناته وهذا مالدي الآن فإن أخطأت فمن نفسي والشيطان وإن أصبت فمن الله عز وجل .
أخوكم عبدالله عيد
__________________
قال صلى الله عليه وسلم (كلمتان خفيفتان على اللسان ثقيلتان في الميزان (سبحان الله وبحمده ** سبحان الله العظيم) اوكما قال صلى الله عليه وسلم . (فهل هذه الكلمتان ثقيلتان على لسانك كي لا تقولها مرة واحدة في اليوم على الأقل)