البرمجة الكائنية ( Object Oriented Programming ) و التي تختصر بكلمة OOP عبارة عن أسلوب نتبعه في كتابة الكود لجعل كتابة الكود أكثر سهولة.
إذاً البرمجة الكائنية هي مجرد أسلوب في العمل لا أكثر و هي ليست خاصة بلغة C++ حيث أنها تطبق في باقي لغات البرمجة.
فكرة البرمجة الكائنية بشكل عام هي تجهيز الشكل الذي سيتم فيه حفظ المعلومات مما يجعل الوصول إليها و التعديل عليها سهل للغاية.
كمثال بسيط, إذا كنت تنوي بناء برنامج لحفظ معلومات المستخدمين, ستقوم بتجهيز الشكل العام للمعلومات التي تنوي حفظها لكل مستخدم.
بعدها, أي مستخدم جديد تنوي إنشاؤه تجعله نسخة من الشكل العام لأي مستخدم و تجعله يدخل القيم الخاصة به
------------
البرمجة الكائنية تتضمن ال class و ال object
مفهوم الكلاس في بايثون
الكلاس عبارة عن حاوية تستطيع أن تضع بداخلها متغيرات, مصفوفات, دوال إلخ..
لتعريف كلاس جديد نكتب class, ثم نضع له إسم, ثم نضع نقطتين.
في المثال التالي قمنا بإنشاء كلاس إسمه MyClass, وضعنا فيه متغير إسمه x.
مفهوم الكائن في بايثون
الكائن عبارة عن نسخة من الكلاس.
لإنشاء نسخة من كلاس معين, نقوم بتعريف متغير قيمته تساوي إسم الكلاس, ثم نضع قوسين.
في المثال التالي قمنا بإنشاء كلاس إسمه MyClass, وضعنا فيه متغير إسمه x. ثم قمنا بإنشاء كائن من هذا الكلاس إسمه obj.
مفهوم الخصائص في بايثون
أي متغير تقوم بتعريفه بشكل مباشر في الكلاس يقال له خاصيّة ( Property ).
السبب في ذلك أن كل نسخة تنشئها من الكلاس ستملك نسختها الخاصة من هذا المتغير.
في المثال التالي قمنا بإنشاء كلاس إسمه MyClass, وضعنا فيه متغير إسمه x.
ثم قمنا بإنشاء كائنين من هذا الكلاس إسمهما o1 و o2.
الكلمة self في بايثون
عند تعريف دالة بداخل كلاس, بايثون تجبرك على وضع الكلمة self أو أي كلمة أخرى كأول باراميتر فيها و من ثم وضع العدد الذي تريده من الباراميترات.
إذاً, حتى لو لم تكن تنوي أن تضع في الدالة أي باراميتر, فإنك مجبر على وضع الكلمة self أو أي كلمة آخرى كباراميتر فيها.
سبب وضع الكلمة self كأول باراميتر في الدالة
وضع الكلمة self كأول باراميتر في الدالة يجعل مفسّر لغة بايثون قادر على الوصول إلى الخصائص الموجودة في نفس الكلاس. أي عند وضع هذه الكلمة كبارامتير في الدالة, تصبح هذه الكلمة بمثابة مؤشر للكلاس نفسه مما يجعلك قادر على الوصول إلى أي شيء تم تعريفه بداخل الكلاس عن طريقها.
في المثال التالي قمنا بإنشاء كلاس إسمه Comparator, وضعنا فيه دالة إسمها print_max فيها باراميترين فقط ( a و b ).
لاحظ أننا مجبرين على وضع الكلمة self كأول باراميتر في الدالة حتى و لو لم نكن بحاجتها و عند إستدعاء الدالة لا نلقي لها بالاً.
الدالة __init__() في بايثون
في البداية, كل كلاس موجود في بايثون أو تنشئه بنفسك, يملك مجموعة دوال جاهزة أهمها الدالة __init__().
هذه الدالة تمكن المبرمج من تمرير قيم لخصائص الكائن مباشرةً عند إنشائه.
قبل قليل قلنا أنه عند إنشاء كائن من أي كلاس نكتب إسم الكلاس ثم نضع قوسين.
الآن عليك معرفة أنك تستطيع تمرير قيم للخصائص بشكل مباشر بين هذين القوسين بشرط أن تكون جهزت الكلاس لهذا الأمر.
التعامل مع الدالة __init__()
في البداية عليك تعريف هذه الدالة تماماً مثل أي دالة تقوم بتعريفها.
بين أقواس الدالة يمكنك مباشرةً تمرير أسماء الخصائص التي تريد أن وضعها في الكلاس و تريد إعطاءها قيم أولية مباشرةً عند إنشاء كائنات من الكلاس.
العلاقة بين الكلاس و الكائن في بايثون
الفكرة الأساسية من الكلاس هي تجهيز الشكل العام لحفظ البيانات و توفير طرق سهلة الإستخدام للوصول إلى هذه البيانات و التعامل معها بسلاسلة.
إذاً الكلاس بطبيعته لا يحفظ أي معلومة, لهذا يقال له نسخة خام ( Blue Print ).
الفكرة الأساسية من الكائن هي إنشاء نسخة مطابقة من الكلاس و إدخال البيانات التي تريد فيها مع إحترام أي شروط موضعة في الكلاس الأساسي.
إذاً لا يمكن إنشاء كائن بدون كلاس لأن الكائن بطبيعته يمثل نسخ من كلاس محدد.
فائدة الكلاس
الخصائص التي يجب أن يمتكلها كل كائن, يتم تعريفها مرة واحدة في الكلاس الأساسي و ليس لكل كائن على حدة.
إذا أردت إضافة, حذف أو تعديل خصائص الكائنات, نعدّل في الكلاس الأساسي فقط لأن الكائنات هي نسخة مطابقة للكلاس.
الكلاس يمكن وضعه في ملف خاص و هذا الأمر سيساعدك كثيراً في المستقبل عند ترتيب كود المشروع - الذي قد يتكون من عشرات الكلاسات - بطريقة سهلة المراجعة و التطوير.
القدرة على تجميع الكائنات و تناقلها دفعة واحدة سواء لتخزينها في قاعدة بيانات أو لنقلها بين شاشة و أخرى الخ..
هذه الأشياء سنشرحها بتفصيل في مستوى متقدم.
الآن, إذا كنت تنوي إنشاء برنامج بسيط لحفظ معلومات عدد غير محدد من الأشخاص. و كل شخص عنده إسم, جنس, عمر و وظيفة. ماذا ستفعل؟!
بكل بساطة الحل هو أن تنشئ كلاس واحد فقط يمثل شخص, و تضع فيه الأشياء الأساسية التي تريدها أن تكون موجودة عند كل شخص. ثم تنشئ منه كائنات قدر ما شئت, و عندها يصبح كل كائن من هذا الكلاس عبارة عن شخص له معلوماته الخاصة كما في الصورة التالية.
ليست هناك تعليقات:
إرسال تعليق