متطلبات قبل البدء :
- مراجعة الدرس السابع عشر: برمجة الكائنات
أهداف الدرس :
- استخدام خصائص التصنيفات
- استخدام معاملات التصنيفات
- الوراثه ( Inheritance )
- الوراثه المتعدده
استخدام خصائص التصنيفات :تعلمنا في السابق , كيفية انشاء تصنيف وتشغيله وانشاء خصائصه وعوامله,
الان سنتعلم كيفية استخدام كل جزء من التصنيف لنعطي تحكم اكبر بالتصنيف
والتعامل معه بطريقه تساعدنا على الوصول الى ما نريد اليه, عندما انشأنا
التصنيف سياره, قامت
PHP بنفسها انشاء متغير لنا اسمه $this ومعناه ( هذا ), فلو لاحظنا في
تصنيفنا السابق ان لدينا خاصيتان واحده منهما هي $carName اليس ذلك صحيحا ؟
, فلو اردنا استخدام هذا المتغير او اردنا الاشاره عليه فسوف نقوم بالتالي
$this->carName , سواءً اردنا استخدامه او اردنا تعيين قيمه اليه ,
داخل معامل او خارجه. لاحظ معي الكود التالي:
في لغة PHP جميع الخصائص التي نقوم بعملها تكون عامه ( public ) , ( تم
تغيير ذلك في النسخه رقم 5 من اللغه وسنتطرق اليها لاحقا ) , حيث ان يمكننا
استخدامها خارج التصنيف في كل الحالات , فمثلا لاحظ التالي:
لاحظ اننا هنا لم نقوم بإستخدام ميزة التصنيفات الرئيسية وهي ( اخفاء
المعلومات ) , ويجب ان نقوم بإستخدامها لكي نضمن الحمايه الكامله لبرنامجنا
, ولكن هناك طريقة اخرى يمكننا الوصول بها الى اخفاء الملعومات وهي ,
استخدام المعاملات , فنضع معامل يقوم بتغير قيمة خاصيه , ومعامل يقوم بوضع
قيمه في خاصيه وغيرها , لاحظ المثال التالي:
1 – معامل يقوم بإرجاع قيمة خاصيه
2 – معامل يقوم بإسناد قيمه الى خاصيه
الان سوف نستخدمه بالطريقه التاليه:
ويمكننا الان , وضع شروط بحيث ان اللون لا يمكن ان يكون احمر على سبيل المثال, شاهد التالي:
استخدام معاملات التصنيفات :الان , لنرى المعاملات , نفس الطريقه التي تعلمناها قبل قليل , ويجب عليك ان تعرف ان كان المعامل يطبع قيمه سوف تقوم بالتالي:
$x->newColor()اما اذا كان يرجع قيمه ( اي تستخدم في الاخير العباره return ) فتقوم بالتالي
echo $x->newColor()او
$y = $x->newColor()بكل سهوله
, اليس ذلك صحيحها ؟
الوراثه ( Inheritance ) :اذا كنت تريد ان تقوم بعمل الوراثه الي تكلمنا عنها في الدرس السابق , سوف تقوم بإستخدام الكلمه المفتاحيه
extends وطريقة عملها كالتالي:
الان لو اردنا انشاء , كائن من هذا التصنيف , سوف يكون كالتالي:
طبعا يمكننا استخدام كل عاومل وخصائص التصنيف الذي نرث منه , ولكن العكس
ليس صحيح , فلو قلنا ان ( ب ) يرث التصنيف ( أ ) , فسوف تكون خصائص وعوامل
( أ ) كلها موجوده في ( ب ) , ولكن خصائص ( ب ) غير موجوده في ( أ )
الوراثه المتعدده :كثير من لغات البرمجه , لا تسمح بالوراثه المتعدده , واعني بذلك , اذا
كان التصنيف ( ت ) , يرث من ( أ ) ومن ( ب ) في نفس الوقت , فذلك غير مسموح
, بحيث ان كل تصنيف , يرث من مكان واحد فقط , ولكن اذا كان هناك ( أ )
وهناك ( ب ) و ( ج ) , فيمكن ل ( ب ) و ( ج ) ان يرثو ( أ ) في نفس الوقت.