تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الدرس السابع عشر : مقدمة إلى مبادئ Oop
#1
منقول من المنتدى القديم
صاحب المقال احمد جمال
المشرف العام
كتب بتاريخ 11-03-08
بسم الله الرحمن الرحيم .

السلام عليكم ورحمة الله وبركاته .

جميع لغات البرمجة التي تطبق مبادئ ال OOP لا بد ان تتعرض للنقاط الثلاث التالية :

Encapsulation
Inheritance
Polymorphism

في هذا الدرس سنتعرف على مقدمة ضرورية لكل منهم ، ثم سنعود مرة أخرى للشرح التفصيلي لكل منهم في دروس قادمة .
الرد }}}}
تم الشكر بواسطة:
#2
منقول من المنتدى القديم
كاتب المقال احمد جمال
المشرف العام

Encapsulation :

يقصد بال Encapsulation هو اخفاء وضم البيانات والأكواد المختلفة واظهارها في النهاية للمستخدم على شكل Black Box ، حيث ستجد في النهاية دالة باسم PrintReport ، في الواقع لا يهمك ما هو الكود الموجود داخلها ، حيث يكفيك استدعاءها لتعمل لديك دالة طباعة التقارير .

تستفيد ايضاً من هذه الخاصية في حالة العمل الجماعي على المشروع ، في الحالة العمل باسلوب Structured ستجد جميع الكود في مكان واحد ، اما مع ال Encapsulation في ال OOP فسيكون كل جزء من العمل مغلقاً على نفسه ويتم التواصل بينهم البعض عن طريق Objects مختلفة ، وهذا ما يساهم في تسهيل تركيب العمل ، تسهيل اكتشاف الأخطاء .
__________________
الرد }}}}
تم الشكر بواسطة:
#3
[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 .
الرد }}}}
تم الشكر بواسطة:
#4
منقول من المنتدى القديم
كاتب المقال احمد جمال
المشرف العام

Polymorphism :

المبدأ الأخير من مبادئ OOP هو السماح بكتابة كلاس بدواله بدون اي Implementation ، والسبب هو اجبار اي مستخدم يقوم باشتقاق الكلاس بعمل implementation لهذه الدوال بما يضمن تشابه الاسماء ، ابسط مثال على ذلك كلاس Shape ، حيث يمكننا تعريفه بالشكل التالي :

c#:
كود :
class Shape
{
public void Draw()
{
}
public void GetSize()
{
}
}

VB.net:

كود :
Class Shape
    Public Sub Draw()
        
    End Sub
    
    Public Sub GetSize()
        
    End Sub
    
End Class

في هذه الحالة يعرف ال Class باسم Abstract Class ، توفر C# ايضاً مبدأ ال Interface والذي يشبه كثيراً ال Abstract Class ولكن مع فروقات سنتعرف عليها في حينها .

في الكلاس السابق فإن كل كلاس ( دائرة ، مربع ، مثلث ) سيتم اشتقاقه من هذا الكلاس سيكون مجبراً على كتابة اكواد الرسم وحساب المساحة لكل منهم . يمكن عمل ذلك بطريقة أخرى عبر ال OverRidding ولكن مع الاختلاف في احتمالية وجود default Implementation .

المبادئ التي تعرفنا عليها اليوم سيتم شرحها تفصيلاً في دروس قادمة ، ولكن كانت هذه المقدمة ضرورية للمتابعة مع بعض العناصر الأخرى ضمن حلقات هذا الأسبوع .

والله الموفق ...
والسلام عليكم ورحمة الله وبركاته .
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  الدرس الأول : تحميل .net 2008 ومميزات استخدامه oneyemenweb2 1 669 07-03-13, 02:04 AM
آخر رد: abdoojh
  اعلان - انتهاء الدورة - الدرس التاسع والسبعون -) RaggiTech 0 598 14-10-12, 11:23 PM
آخر رد: RaggiTech
  الدرس الثامن والسبعون - Ajax RaggiTech 2 868 14-10-12, 11:22 PM
آخر رد: RaggiTech
  الدرس السابع والسبعون - ASP.net وقواعد البيانات RaggiTech 2 906 14-10-12, 11:19 PM
آخر رد: RaggiTech
  الدرس السادس والسبعون - ASP.net - الجزء الثالث RaggiTech 7 1,144 14-10-12, 11:14 PM
آخر رد: RaggiTech
  الدرس الخامس والسبعون - ASP.net - الجزء الثاني RaggiTech 5 1,310 14-10-12, 11:07 PM
آخر رد: RaggiTech
  الدرس الرابع والسبعون - ASP.net RaggiTech 6 1,084 14-10-12, 10:58 PM
آخر رد: RaggiTech
  الدرس الثالث والسبعون - مقدمة إلى تطوير المواقع RaggiTech 4 843 14-10-12, 10:44 PM
آخر رد: RaggiTech
  الدرس الثاني والسبعون - مقدمة إلى Mono RaggiTech 0 594 14-10-12, 10:37 PM
آخر رد: RaggiTech
  الدرس الواحد والسبعون - XML Commenting RaggiTech 2 793 14-10-12, 10:35 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم