![]() |
|
الدرس السابع عشر : مقدمة إلى مبادئ Oop - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : الأقسام التعليمية - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=90) +--- قسم : قسم دورات المنتدى (http://vb4arb.com/vb/forumdisplay.php?fid=113) +---- قسم : دورة .net 2008 . لنبدأ سوياً (http://vb4arb.com/vb/forumdisplay.php?fid=138) +---- الموضوع : الدرس السابع عشر : مقدمة إلى مبادئ Oop (/showthread.php?tid=5415) |
الدرس السابع عشر : مقدمة إلى مبادئ Oop - oneyemenweb2 - 08-10-12 منقول من المنتدى القديم صاحب المقال احمد جمال المشرف العام كتب بتاريخ 11-03-08 بسم الله الرحمن الرحيم . السلام عليكم ورحمة الله وبركاته . جميع لغات البرمجة التي تطبق مبادئ ال OOP لا بد ان تتعرض للنقاط الثلاث التالية : Encapsulation Inheritance Polymorphism في هذا الدرس سنتعرف على مقدمة ضرورية لكل منهم ، ثم سنعود مرة أخرى للشرح التفصيلي لكل منهم في دروس قادمة . الدرس السابع عشر : مقدمة إلى مبادئ Oop - oneyemenweb2 - 08-10-12 منقول من المنتدى القديم كاتب المقال احمد جمال المشرف العام Encapsulation : يقصد بال Encapsulation هو اخفاء وضم البيانات والأكواد المختلفة واظهارها في النهاية للمستخدم على شكل Black Box ، حيث ستجد في النهاية دالة باسم PrintReport ، في الواقع لا يهمك ما هو الكود الموجود داخلها ، حيث يكفيك استدعاءها لتعمل لديك دالة طباعة التقارير . تستفيد ايضاً من هذه الخاصية في حالة العمل الجماعي على المشروع ، في الحالة العمل باسلوب Structured ستجد جميع الكود في مكان واحد ، اما مع ال Encapsulation في ال OOP فسيكون كل جزء من العمل مغلقاً على نفسه ويتم التواصل بينهم البعض عن طريق Objects مختلفة ، وهذا ما يساهم في تسهيل تركيب العمل ، تسهيل اكتشاف الأخطاء . __________________ الدرس السابع عشر : مقدمة إلى مبادئ Oop - oneyemenweb2 - 08-10-12 [COLOR="#FF0000"] Inheritance : [/COLOR] أو الوراثة ، ويقصد بها عمل نسخة جديدة من الكلاس تحتوي على نفس خصائصه من اجل تطويرها أو تعديل بعض الخصائص ، لنفترض مثلاً ان لدينا كلاس (سيارة) يحتوي على اسم السيارة وتاريخ صنعها مثلاً . والآن نريد القيام بعمل كلاس للسيارات ال BMW مثلاً ، في هذه الحالة من الخطأ ان نقوم بعمل كلاس منفصل لها ، ولكننا نستطيع اشتقاق كلاس جديد من الكلاس Car مع اضافة خاصية isSport للكلاس المسمى BMW ، الهدف من ذلك اننا سنجد خصائص مشتركة بين ال Car و ال BMW ، ايضاً سنضطر يوماً لاضافة كلاس لل GMC والذي سيحتوي بدوره على بيانات مشتركة . السبب الآخر لو قمنا باضافة عنصر جديد مثل countofdoors لكل السيارات ، فهل سنقوم بالتعديل في جميع الكلاسات ، في حالة قمنا بعمل اشتقاق من الكلاس Car فإننا نستطيع التعديل فيه فقط لتطبيق التعديلات . ربما لا تظهر الأهمية في الكلاسات الصغيرة ولكن تستطيع تخيل حجم الفائدة في حالة وجود كم كبير من البيانات . يتم تعريف العلاقة Inheritance باسم is a ، حيث ان BMW is a car ، ايضاً في حالة وجود كلاس للاشكال وكلاس آخر للدائرة مثلاً فإن Circle is a shape . هناك نوع آخر من العلاقات بين ال Classes وهي علاقة has a وتسمى باسم aggregation ، في هذه الحالة يكون الكلاس الثاني محتوي على الكلاس الأول ، مثلاً لو كان لدينا كلاس من اجل عجلات السيارة باسم Wheels ، ستكون Car has a wheel . الدرس السابع عشر : مقدمة إلى مبادئ Oop - oneyemenweb2 - 08-10-12 منقول من المنتدى القديم كاتب المقال احمد جمال المشرف العام Polymorphism : المبدأ الأخير من مبادئ OOP هو السماح بكتابة كلاس بدواله بدون اي Implementation ، والسبب هو اجبار اي مستخدم يقوم باشتقاق الكلاس بعمل implementation لهذه الدوال بما يضمن تشابه الاسماء ، ابسط مثال على ذلك كلاس Shape ، حيث يمكننا تعريفه بالشكل التالي : c#: كود : class ShapeVB.net: كود : Class Shape في هذه الحالة يعرف ال Class باسم Abstract Class ، توفر C# ايضاً مبدأ ال Interface والذي يشبه كثيراً ال Abstract Class ولكن مع فروقات سنتعرف عليها في حينها . في الكلاس السابق فإن كل كلاس ( دائرة ، مربع ، مثلث ) سيتم اشتقاقه من هذا الكلاس سيكون مجبراً على كتابة اكواد الرسم وحساب المساحة لكل منهم . يمكن عمل ذلك بطريقة أخرى عبر ال OverRidding ولكن مع الاختلاف في احتمالية وجود default Implementation . المبادئ التي تعرفنا عليها اليوم سيتم شرحها تفصيلاً في دروس قادمة ، ولكن كانت هذه المقدمة ضرورية للمتابعة مع بعض العناصر الأخرى ضمن حلقات هذا الأسبوع . والله الموفق ... والسلام عليكم ورحمة الله وبركاته . |