متطلبات قبل البدء :اهداف الدرس :
- مقدمه عن برمجة الكائنات ( Object Oriented )
- مبدأ التعدديه ( Polymorphism )
- مبدأ الوراثه ( Inheritance )
- انشاء التصنيفات ( Class ) , الخواص ( Attribute ) , العمليات ( Operations )
- مؤسس التصنيف ( Constructer )
- استخدام التصنيفات
مقدمه عن برمجة الكائنات ( Object Oriented ) :برمجة الكائنات نعني بها , الوصول بالبرمجه الى محاكاة الواقعيه, كثير
من البرامج التي لا تدعم الكائنات يصعب فهم كودها, ولكن مع هذه الطريقه,
يوجد لدينا طريق نحاكي به الواقع, لو فكرت قليلا وسألت نفسك, كيف يمكنني ان
اقوم بمحاكاة سيارة , طائره , انسان وغيرها, صدقني سيصعب عليك ذلك من غير
هذا المبدأ ولكن اذا استخدمت برمجة الكائنات فيسهل عليك فعل كل شي محاكي
للواقع تريده, فمثلا لو قلنا ان لدينا تصنيف ( Class ) اسمه بشر , اكيد ان
هذا البشر لديه خواص ( attributes ) فهو ينتمي الى نوع وهو ذكر او انثى,
لديه اسم , لديه عمر , لديه لون بشره , لديه طول , لديه وزن وهكذا, ولديه
عمليات ( operations ) يقوم بها كالنوم والاستيقاظ, والافطار, تخيل انك
تقوم بفعل هذا كله بالبرمجه ؟؟؟ ماهو الاسهل بالنسبه لك الطريقه المعتاده
من كتابة الاكواد , او الطريقه الجديده التي سنتعلمها بعد قليل
. وايضا نستطيه استخدام هذا المبدأ للاشياء المبدئيه, كالملفات مثلا , فيوجد لدينا ملف , ولديه اسم ولديه حجم , ولديه نوع وغير ذلك.
كثير من لغات البرمجه الحديثه تدعم مبدأ ( Object Oriented ), وتعتبر
التي لا تدعمها ضعيفه, فأصبح كل شي في هذه الايام يعتمد على هذا المبدأ,
فهو اسرع , اسهل , اكثر حمايه من الكود العادي, وبعض اللغات يطلب منها
ويلزم عليها ان تكون مبنيه على هذا المبدأ. ومن وجهة نظري انا, اعتقد ان
البرنامج الذي لا يستخدم هذا المبدأ لن يكون جيدا , ( ليس في كل الحالات ).
من اعظم فوائد مبدأ ( Object Oriented ) دعم والتشجيع على مبدأ (
Encapsulation ) ونعني به ( اخفاء المعلومات ), حيث اننا لا نستطيع التحكم
في الخواص او المعاملات الا عن طريق الكائن, ومانسميه بواجهة الكائن. حى لو
اردنا تغير نوع او اصلاح او اضافة اي شيئ, فسوف نرجع الى التصنيف الاساسي ,
ولن تطرق الى تعديل جميع اكوادنا. ويمكننا انشاء اكثر من ( Object ) من
هذا التصنيف, حيث كل واحد منهم منفصل عن الاخر, فتخيل لدينا التصنيف الاول (
البشر ) فنستطيع انشاء عدة كائنات منه , واحد اسمه محمد ولديه خواص معينه ,
والاخر اسمه نوال ولديه خواص ومعاملات اخرى, ولا يعني انهم واحد, فكل واحد
منهم منفصل على الاخر, ولديه تحكمات وخواص خاصه به.
مبدأ التعدديه ( Polymorphism ) :بحثت في كثير من المعجمات والتراجم عن معنى هذه الكلمه بالعربيه ولم
اجد, ولكن قرأت كتابا يقول عنها ( Different Classes have different
behaviors for the same operations ) ومعنى ذلك باللغه العربيه, ان تصنيفات
مختلفه يكون لديها سلوكات مختلفه لنفس العمليات, معادله رياضيه اليس كذلك ؟
لن تستطيع فهمها بسرعه, يجب ان تأخذ عليها امثله كثيره ليصل المبدأ الى
العقل وتقوم بإستيعابه, واترك ذلك علي فسأحاول قدر الامكان ان اقوم بتسهيله
لك. لنأخذ مثالا على ذلك, لو عندنا تصنيف سياره وتصنيف دراجه هوائيه, فكل
منهما لديه خاصية التحرك ولكن في السياره يجب ان تقوم بالتشغيل, ولكن في
الدراجه بطريقه اخرى ولا يوجد لدينا تشغيل, ولكن في لغات البرمجه لا يوجد
لدينا هذا الواقع ولا تقوم بمحاكاة الواقع 100%100 فلذلك تحتاج اللغه (
polymorphism ) لكي تعرف اي عمليه تقوم بعملها لاي تصنيف. لنقولها بطريقه
واقعيه باستخدام اللغه العربيه, الدراجه تحتاج الى تقوم بصيانتها , صبغها ,
تنظيفها , تلميعها , ونفس الشيئ السياره , ولكن اذا قلت اريد ان انظف,
فيوجد بعقلك ماهو الشيئ الذي تريد ان تقوم بتنظيفه هل هو سياره او دراجه,
هل وصلت الفكره ؟؟
مبدأ الوراثه ( Inheritance ) :عملية الوراثه سهله, فأنت على سبيل المثال, ورثت صفة الحواجب العريضه من
الاب, و الانف المعتدل من الام وغير ذلك, ولكن لديك اشياء وخواص خاصه بك
لا توجد في الاب و الام اليس ذلك صحيحا ؟ نفس الشيئ هنا, لنضرب مثالا على
ذلك , لدينا شركة سيارات, تقوم ببيع سيارات على عدة انواع ( رياضيه ,
عائليه , جيب ) , كل منهم لديهم خواص متماثله , كل سياره لها لون, كل سياره
لها 4 عجلات, وغيرها, ولكن كل نوع لديه بعض الخصائص لا توجد في الاخرى,
الرياضيه مقعدان فقط, الجيب 7 مقاعد , العائليه 5 مقاعد. في مبدا الكائنات
نقوم بعملها كالتالي, ننشئ تصنيف اسمه سياره, وثلاث تصنيفات اخرى ونجعلها
تورث الصفات من التصنيف سياره, هل وضحت الصوره ؟ انظر المثال التالي:
انشاء التصنيفات ( Class ) , الخواص ( Attribute ) , العمليات ( Operations ) :تكلمنا كثيرا في درس اليوم, لنأتي الان الى تطبيقاتنا , ونأخذ امثله حيه
لكيفة انشاء التصنيفات والخواص والمعاملات. يمكننا انشاء تصنيفات بإستخدام
العباره
class لاحظ المثال التالي:
تصنيفنا هذا يحتاج الى خواص , لنقم الان بإنشاء خاصيتين , وهي اسم السياره ولونها , ونقوم بإنشاء الخواص بإستخدام العباره
var , لاحظ التالي :
————————————————–
مؤسس التصنيف ( Constructer ) :في كل تصنيف نقوم بإنشائه يجب علينا ان نقوم بإنشاء مؤسس لهذا التصنيف
ويسمى ( Constructer )وهو نوع خاص من العمليات, وينادى هذا المؤسس في حالة
انشاء الكائن وفي العاده يقوم ببدأ خواص الكائن, كجعل الخواص تبدأ من
البدايه وغيرها,
ويجب ان يكون اسمه بنفس اسم التصنيف, والطريقه هي كالتالي:
————————————————–وايضا نحتاج الى ان ننشئ بعض المعاملات على هذا التصنيف , ونقوم بذلك بإستخدام الدوال التي تعلمناها سابقا, راجع
الدرس الحادي عشر: ادراج الملفات والدوال بأنواعها, لاحظ التالي :
استخدام التصنيفات :الان قمنا بإنشاء تصنيف خاص بنا, نريد ان نقوم بإستخدامه, او البدأ بالعمل عليه, كيف نقوم بذلك ؟؟ لاحظ المثال التالي:
لاحظ اننا نقوم بإنشاء كائن في كل مره نقوم بإنشاء كائن من التصنيف, ولذلك سوف يكون ناتجنا هو التالي:
اعتقد ان درس اليوم طويل جدا , واخذت كميه كبيره من المعلومات, لذلك سوف
اقف هنا الان, واكمل المتبقي في الدرس القادم ان شاء الله ولا تنسى انه في
حالة صعوبة اي شيئ عليك , راسلني بريديا وسوف يسعدني ان اقوم بالاجابه
سؤال على الدرس :1 – لا يوجد
الـــدرس الــقادم :سوف نتعرف في الدرس القادم على استخدام الخواص والمعاملات والوراثه , لكي نتحكم بقوه اكبر في برمجة الكائنات