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

مرة أخرى حتى نرسخ مفهوم التغليف ونقصد النوع الأول وهو تغليف المعطيات والمناهج ضمن صنف واحد

لعل الكثير تعامل مع نوع المعطيات الخاص بالوقت والتاريخ DateTime النوع المستخدم في الدوت نت وما يقابله في اللغات الأخرى

المبرمج لا يعلم من هذا النوع عندما ينشيء متحول منه إلا أن يستخدم خصائصه ومناهجه

مثل السنة والشهر واليوم و كذلك استرجاع تاريخ بعد إضافة عدد معين من الأيام أو الشهر أو السنين ويعيد نتيجة دقيقة صحيحة بدون أن تشغل بالك أنت بحساب هل السنة كبيسة أم هل هذا الشهر هو كم يوم 31 أم 28 و غيرها من الحسابات

إن كل هذا يجري داخل الصنف دون أن تدري ولا ترى إلا مايهمك وهو النتائج

ألق نظرة على داخل هذا الصنف

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

أنت تذهب لمحل غسيل وكي الملابس تعطيه ملابسك فقط

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

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

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

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

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

فمؤسسة الكهرباء معطياتها كابلات كهربائية ومفاتيح ومحولات والوحدات التي تتعامل معها فولط وأمبير وواط

أما وظائفها فهي تركيب محولات وتمديد كابلات جوية أو أرضية و تشييد محطات توليد

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

و أما مؤسسة المياه

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

وأما وظائفها فهي تمديد الأنابيب وشبكات المياه وتشييد خزانات الماء وحفر الأبار

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

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

لم نسمع عن عائلة لها ولدان بنفس الاسم تماما

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

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

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

وهذا ما يدعى تعدد الأشكال Polymorphism

وهنا المقصود تعدد شكل العمل الداخلي للمناهج مع تشابه تسمياتها

والذي يحدد طبيعة هذا الشكل هو مهمة هذا المنهج بما يناسب طبيعة الصنف أو الفئة التي تتبع له

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

أما لو أعطيت نفس السيارة لمحل تصليح كهرباء السيارة وقلت له أفحصها فسيقوم بفحص الكابلات والمصابيح والبطارية وغيرها

لاحظو نفس المعطيات وتم طلب نفس الوظيفة ولكن الأداء مختلف لأن كل جهة تفسر الطلب بالطريقة التي بنيت عليها

يتبع ...

إن شاء الله