OOP | البرمجة بمنهجية الأصناف والأشياء OOP الجزء (04)
لا يكاد أحد يقرأ عن البرمجة غرضية التوجه إلا ويسمع عن صفة الوراثة Inheritance
في الحقيقة إن هذه الصفة تعبر عن إعادة الاستخدام أكثر منه الوراثة بالمعنى المطلق
فالصنف الذي يرث من صنف آخر هو يعيد استخدامه بشكل أو بآخر
ولتوضيح هذا المدلول دعونا نقربه بأمثلة
تقتضي الفطنة والحكمة أن يبدأ المرء من حيث انتهى الآخرون إذا كان سينتهي بما انتهوا إليه إذا بدء بدايتهم
فليس من المعيب ولا المخجل أن تقوم شركات تكنولوجيا كبيرة مثل شركات الهواتف النقالة باستخدام معالجات أو قطع إلكترونية من صنح شركة أخرى وهل هي عاجزة أصلا أن تفتتح فرع لصناعة مثل تلك القطع أو الأجزاء
ولكن هي أرادت أن تتخطى الزمن وتوفر الوقت والمال بإعادة استخدام ما انتهى منه الآخرون وجربوه واستخدموه وأثبت كفائته
ليس من الخطأ أن نقوم شركات برمجية ضخمة مثل مايكروسوفت أو أبل أو صن من تضمين برامجها وأنظمتها برامج من شركات أصغر منها
ولا شك أنها ليست بعاجزة عن إنتاج شبيه بتلك البرامج وربما أكفأ
ربما تقول لي هي تريد الاستفادة من الشهرة والشعبية لتلك البرامج الخدمية الصغيرة
أقول لك نعم وهذا مكمن الشاهد
هو الاستفادة مما هو موجود وموثوق بدل من البدء من الصفر
إن هذا المعنى الذي يتجسد في مدلول الوراثة بين الأصناف في البرمجة غرضية التوجه
فعلى فرض تحتاج صنف يقوم بعمليات خاصة متعلقة بالوقت والتاريخ وليست موجودة ضمن النوع القياسي
فما يضير إن قمت بإنشاء صنف جديد خاص بك ولتسمه DateTimeExtended أي صنف الوقت والتاريخ الموسع بحيث يتضمن مناهج و أحداث وخصائص غير متوفرة في النوع القياسي
وهنا تأتي فائدة الوراثة أو إعادة الاستخدام كما قدمت
فالأفضل بدلا من بناء كل الخصائص والوظائف الموجودة ضمن النوع القياسي من البداية أن تستثمر ذاك الصنف المكتوب من قبل خبراء في البرمجة ومجرب ومحمي من الأخطاء
كيف ذاك هو من خلال خاصية الوراثة التي تجعل الصنف الجديد يؤمن للخارج كل ما يؤمنه الصنف الأساس (الموروث منه) أو المعاد استخدامه بدون أن تضطر لتكرار كتابة حرف واحد منه
فقط كل ما عليه أن تشير عند بناء الصنف أنك تود إعادة استخدام الصنف الجاهز
ويعتمد صيغة ذلك على لغة البرمجة
وننوه هنا أن اللغة تؤمن حل الاعتراضات التي قد تواجهك كأن تريد تضمين منهج موجود في الصنف الأساس وهذا ما يسمى بالتخطي أو التجاوز Method Overriding
أي إعادة صياغة منهج موجود بنفس الاسم ضمن الصنف الأساس
إن من فوائد الوراثة أيضا بناء أصناف تحمل بنية مشتركة بين عدة أصناف أخرى بدل من تكرارها وتكرار كل ما يلزم من تصحيح وتنقيح وتعديل
فمثلا لاحظوا باستخدام الوراثة أمكن تشكيل بنية شجرية قوية من عناصر الواجهة المرئية لواجهات المستخدم
فمثلا طالما أن كل العناصر المرئية يجب أن يكون لها اسم معرف وطول وعرض وموقع منسوب للزاوية وأحداث مثل استقبال النقر على الماوس أو الضغط على مفاتيح الكي بورد
فلما نكررها في كل أصناف العناصر طالما نستطيع جعلها في صنف أساس ونجعل الجميع يرث أو يعيد استخدام هذا العنصر
لعل من الأمثلة الشائعة التي تضرب لتوضيح خاصية الوراثة
هي أنه بالإمكان بناء صنف يعبر عن شخص ما بحيث يكون له اسم أول واسم آخر (أي اسم العائلة) و النوع والعمر ورقم تعريفي
ثم هذا الصنف الذي نطلق عليه اسم Person نجعله أساس لإعادة استخدامه في أصناف أخرى أكثر تخصصا
مثل طالب و موظف و مسؤول
فالكل أشخاص لأن كل واحد من هؤولاء هو شخص له اسم واسم عائلة ونوع وعمر ورقم تعريفي
يبقى هنا إضافة ما يخص كل نوع فالطالب قد نحتاج إضافة خاصية تعبر عن السنة الدراسية الحالية أو المدرسة أو الدرجة المحصلة
بينما الموظف لا يملك مثل هذه الخصائص وإنما له خصائص أخرى مثل الوظيفة والموقع الوظيفي والقسم الذي يتبع له أو المؤسسة التي يعمل بها .
يتبع ...
إن شاء الله