OOP | البرمجة بمنهجية الأصناف والأشياء OOP الجزء (02)

بعد أن استعرضنا مبدأ البرمجة بمنطق الكائنات

دعونا نوضح أكثر

نحن نعلم أن المتحول أو المتغير المستخدم أثناء البرمجة يمتلك نوع معطيات منها ما هو قياسي ومعرف من قبل اللغة كالنوع النصي string أو الرقمي بأنواع الصحيح integer أو الكسري float أو البولياني (المنطقي) boolean وسواء المشتقة منها كالنوع عشري decimal

أو العملة currency

في الحقيقة الأنواع السابقة تأخذ قيم محددة أي النوع الرمزي يحوي المتغير قيمة سلسلة رمزية معينة والنوع الرقمي الصحيح يأخذ رقم صحيح والكسري يأخذ رقم بفاصلة عائمة

والبولياني يأخذ إحدى قيمتين إما true أو false

ولكن في منطق البرمجة الشيئية أصبح بإمكان توسيع الأمر لجعل نوع المعطيات مركبا وأكثر تقدما حيث أصبح بالإمكان أن يكون المتغير من نوع صنف ما معرف من قبل المستخدم

بحيث تكون قيمة المتغير في لحظة ما أثناء زمن التنفيذ تحوي قيمة محددة وهي عبارة عن كائن أو شيء تم إنشاؤه من ذاك الصنف

وبوجود الكائن فعلا أصبح بالإمكان الوصول إلى كل ما يحوي بما يسمحه لنا من رؤيته

أي أشبه بقدوم مولدود جديد من صنف الإنسان فطالما ظهر للوجدود أصبح بإمكاننا أن نعطيه اسما وأن نزن وزنه وأن نعرف لون عينيه ولون شعره

أما قبل أن يُخلق فلا نستطيع معرفة شيء لأنه غير موجود أصلا

سنوضح هذه الفلسفة لنضرب مثالا من واقع حياتنا

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

فكل الساعات تحمل نفس الخصائص ولكن كل ساعة تكون بخصائص مختلفة عن الأخرى

فمثلا الساعة التي اشتريتها أنت من النوع العادي وليس الرقمي ولونها أبيض ووزنها 300 جرام

و لها جرسان وهكذا

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

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

وبإمكانك تشغيل أو إيقاف المنبه

ولكن لا تستطيع رؤية المسننات الداخلية وهي تدور ولا تستطيع معرفة عدد تلك المسننات

فهذه خصائص ووظائف تم إخفاؤها عنك لأنها لا تعنيك أنت وإنما هي ضرورية لضمان نجاح الهدف من ذاك الشيء

وهذا لا شك أفضل للطرفين فلا أنت سترتبك بتعقيد البنية الداخلية و بنفس الوقت سيتم حماية البنية من العبث والعطب

هذا ما يسمى بالتغليف أي أن بنية الساعة غلفت ما بداخلها من خصائص كأنواع وأشكال المسننات ومن وظائف من حركة تلك المسننات و أحداث ناتجة عن تحقق شروط محددة مثل تطابق الوقت الحالي مع وقت المنبه

من هنا يمكن توضيح أن الأصناف جاءت لتحوي وتغلف كل من :

  • الخصائص Properties والتي هي المتغيرات التي ستحوي القيم أي المعطيات

  • المناهج Methods وهي التي تعبر عن الإجراءات أو الوظائف Functions سابقا

  • الأحداث Events و هي إجراءات تحدث عند تحقق شرط معين متعلق بقيم معينة لخصائص ما أثناء سير استدعاءات المناهج

كما يُطلق مصطلح التغليف على كبسلة المتغيرات الداخلية من خلال الخصائص التي تكون مسؤولة عن إدخال وإخراج القيم وسنتحدث عنها لا حقا

إذا لكل صنف خصائصه و مناهجه و أحداثه سواء الظاهر للخارج أو الداخلي المخفي عن الخارج

في الحقيقة إن هذا بحد ذاته أمر هام جدا

ففرق أن تذهب إلى مطعم ويقال لك المطبخ والأدوات والمواد أمامك اطبخ ما شئت

وبين أن تذهب إلى مطعم فقط تختار طلبك من القائمة لتأتيك جاهزة وتوضع أمامك لتأكل فقط

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

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

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

يتبع ...

إن شاء الله