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

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

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

فالصنف الذي يرث من صنف آخر هو يعيد استخدامه بشكل أو بآخر

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

تقتضي الفطنة والحكمة أن يبدأ المرء من حيث انتهى الآخرون إذا كان سينتهي بما انتهوا إليه إذا بدء بدايتهم

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

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

ليس من الخطأ أن نقوم شركات برمجية ضخمة مثل مايكروسوفت أو أبل أو صن من تضمين برامجها وأنظمتها برامج من شركات أصغر منها

ولا شك أنها ليست بعاجزة عن إنتاج شبيه بتلك البرامج وربما أكفأ

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

أقول لك نعم وهذا مكمن الشاهد

هو الاستفادة مما هو موجود وموثوق بدل من البدء من الصفر

إن هذا المعنى الذي يتجسد في مدلول الوراثة بين الأصناف في البرمجة غرضية التوجه

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

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

وهنا تأتي فائدة الوراثة أو إعادة الاستخدام كما قدمت

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

كيف ذاك هو من خلال خاصية الوراثة التي تجعل الصنف الجديد يؤمن للخارج كل ما يؤمنه الصنف الأساس (الموروث منه) أو المعاد استخدامه بدون أن تضطر لتكرار كتابة حرف واحد منه

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

ويعتمد صيغة ذلك على لغة البرمجة

وننوه هنا أن اللغة تؤمن حل الاعتراضات التي قد تواجهك كأن تريد تضمين منهج موجود في الصنف الأساس وهذا ما يسمى بالتخطي أو التجاوز Method Overriding

أي إعادة صياغة منهج موجود بنفس الاسم ضمن الصنف الأساس

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

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

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

فلما نكررها في كل أصناف العناصر طالما نستطيع جعلها في صنف أساس ونجعل الجميع يرث أو يعيد استخدام هذا العنصر

لعل من الأمثلة الشائعة التي تضرب لتوضيح خاصية الوراثة

هي أنه بالإمكان بناء صنف يعبر عن شخص ما بحيث يكون له اسم أول واسم آخر (أي اسم العائلة) و النوع والعمر ورقم تعريفي

ثم هذا الصنف الذي نطلق عليه اسم Person نجعله أساس لإعادة استخدامه في أصناف أخرى أكثر تخصصا

مثل طالب و موظف و مسؤول

فالكل أشخاص لأن كل واحد من هؤولاء هو شخص له اسم واسم عائلة ونوع وعمر ورقم تعريفي

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

بينما الموظف لا يملك مثل هذه الخصائص وإنما له خصائص أخرى مثل الوظيفة والموقع الوظيفي والقسم الذي يتبع له أو المؤسسة التي يعمل بها .

يتبع ...

إن شاء الله