السلام عليكم ورحمة الله وبركاته :
في الدرس السابق : ال Classes في VB.NET
قمت بشرح ماهية الـ Class وكيفية انشاءها وكيفية التعامل معها وعلي الرغم من اني أردت التطرق الي الـ Properties أولا الا أن الأقدار شاءت أن أقدم درس بسيط وصغير عن الـ Inheritance أولا مع وعد بتقديم درس عن الـ Properties لاحقا ان شاء الله تعالي ,,,
ما هي الوراثه ؟؟؟
بالمعني العادي المألوف , ففي المعتاد أن يقال أن الشخص الفلاني ورث من والده عدة (((خواص))) مثل اللون والطول و .......و(((أفعال))) مثل حب البرمجة بالفيجوال بيسك دوت نت و.......,,,
معني ذلك أنه له نفس الخواص Properties وكذلك الأفعال Methods السابقه و ذلك بغض النظر أن هذاالشخص لديه خواص وأفعال أخري اضافيه غير موجوده في الأب ,,,
ولاختصار الموضوع لو أنك تقوم بعمل برنامج يتطلب عمل فصيلتين 2 Classes وأنشات الـ Class الأولي بالفعل وأردت انشاء Class أخري تحوي نفس Properties و Methods الخاصه بالـ Class الأولي هل ستقوم بانشاء نفس ال Properties و Methods التي قمت بانشاءها في الClass الأولي داخل الClass الثانيه مره أخري ؟؟؟ لا طبعا ,,,
ففي هذه الحاله نستخدم مبدأ الوراثه Inheritance وطبعا تسمي ال Class الأولي بال Parent أو Super أو Base والـ Class الثانيه تسمي بالـ Child أو Sub أو Drived كيف ذلك ؟؟؟
بعد انشاء Parent Class التي تحتوي علي داله جمع قيمتين نجد أن الكود بها كالتالي :
[align=left:dbd56c5fbf]CODE[/align:dbd56c5fbf]
[code:1:dbd56c5fbf]Public Class Parent
Public Function sum(ByVal x As Integer, ByVal y As Integer)
Return (x + y)
End Function
End Class[/code:1:dbd56c5fbf]
و Child Class التي بها داله الفرق بي قيمتين ونريد اضافه داله الجمع الموجوده في الParent Class اليها دون كتابتها مره أخري فيكون الكود بها كالتالي :
[align=left:dbd56c5fbf]CODE[/align:dbd56c5fbf]
[code:1:dbd56c5fbf]Public Class Child
Inherits Parent
Public Function diff(ByVal x As Integer, ByVal y As Integer)
Return (x - y)
End Function
End Class[/code:1:dbd56c5fbf]وطبعا نستنتج أن صيغة الـ Inheritance القياسيه تكون كالتالي :
[align=left:dbd56c5fbf]CODE[/align:dbd56c5fbf]
[code:1:dbd56c5fbf]Inherits < Parent Class Name >[/code:1:dbd56c5fbf]
ثم في الفورم الرئيسيه في حدث Button1 Click :
1- ننشئ وجود للـ Child Class التي تحتوي علي دالتين الجمع والطرح وذلك بعد وراثه الـ Parent Class ,
[align=left:dbd56c5fbf]CODE[/align:dbd56c5fbf]
[code:1:dbd56c5fbf]Dim adif As New Child[/code:1:dbd56c5fbf]
2- ولعرض ناتج الداله في رساله ,
[align=left:dbd56c5fbf]CODE[/align:dbd56c5fbf]
[code:1:dbd56c5fbf]MsgBox(adif.sum(Val(TextBox1.Text), Val(TextBox2.Text)))[/code:1:dbd56c5fbf]
من السابق وجدنا أنه أنشأنا وجود للـ Child Class ولكن استخدمنا عن طريقه داله موجوده في الـ Parent Class .
أما بفرض أنك أنشأت Class ولا تريد الوراثه منها لسبب ما مثل أنك لا تريد أن تتداخل دوال كل Class مع الأخري ((مثلا)) يكون الاعلان عن الـ Parent Class كالتالي :
[align=left:dbd56c5fbf]CODE[/align:dbd56c5fbf]
[code:1:dbd56c5fbf]Public NotInheritable Class < Class Name >[/code:1:dbd56c5fbf]
جرب وأضف كلمة NotInheritable الي الاعلان عن الـ Parent Class ثم أنظر الي كود حدث Button1 Click ....ماذا وجدت ؟؟؟
تجد أنه لم يتم التعرف علي الداله sum ...........,,,
لأنه بهذا الداله sum ليست تابعه للـ Child Class ,,,
هذه هي مبادئ الوراثه ,,,
أرجو أن أكون قد أفدتكم ,كماأرجو أن أكون قد وفقت في توصيل معني الوراثه وكيفيه الاستفاده منها وان كان عندي خطأ فياريت توضحوه ,,,
كما أرجو ممن له تعليق ألا يتردد في كتابته ,,, وفقنا ووفقكم الله لما فيه الخير ,,,
رابط الدرس