14-10-12, 03:32 PM
تعريف علاقة is-a :
كما ذكرنا في الدرس السابع عشر ، فإن العلاقة قد تكون is-a وقد تكون has-a ، سنحاول الآن شرح النوع الأول من العلاقات والذي يعني ان الكلاس المشتق هو من نوع الكلاس الرئيسي ، سنفترض سيارة BMW :
C#:
VB.net:
هكذا نستطيع ان نقول ان الكلاس الابن BMW يحتوي على نفس خصائص الكلاس الأب Car ونفس دواله وطرقه ال public فقط ، ولكن لنفترض اننا في الكلاس الابن نحاول الوصول المباشر إلى الخاصية carName فلن نتمكن من ذلك ، هذا المثال يوضح هذه النقطة :
C#:
VB.net:
حتى لو قمنا بتعريف بعض الدوال داخل الكلاس المشتق بحيث تستطيع الوصول إلى هذه الخاصية ، لنفترض اننا اعدنا صياغة الكلاس BMW ليكون بالشكل التالي :
C#:
VB.net:
للاسف لن يكون هذا صحيحاً تماماً ، حيث انك بالرجوع إلى درس معرفات الوصول ستكشتف ان معرف الوصول private لا يمكن الوصول له من الكلاس المشتق ، من اجل هذا نستخدم معرف الوصول protected حيث انه يشبه ال private في كونه لا يمكن الوصول المباشر له من خلال ال object ، لكنه في المقابل يمكن الوصول إليه من داخل الكلاس المشتق ، لو افترضنا مثال الكلاس Car بالشكل التالي :
C#:
VB.net:
في هذه الحالة يمكننا تعريف دالة داخل الكلاس المشتق BMW تقوم بقراءة هذه المتغيرات ، لذا سوف يكون الكود التالي صحيحاً :
C#:
VB.net:
كما ذكرنا في الدرس السابع عشر ، فإن العلاقة قد تكون is-a وقد تكون has-a ، سنحاول الآن شرح النوع الأول من العلاقات والذي يعني ان الكلاس المشتق هو من نوع الكلاس الرئيسي ، سنفترض سيارة BMW :
C#:
كود :
class BMW: Car
{
}كود :
Class BMW
Inherits Car
End ClassC#:
كود :
BMW ahmedcar=new BMW();
ahmedcar.carName="anyname";كود :
Dim ahmedcar As New BMW()
ahmedcar.carName = "anyname"C#:
كود :
class BMW: Car
{
public changeCarName(string value)
{
carName=value;
}
}كود :
Class BMW
Inherits Car
Public Sub New(ByVal value As String)
carName = value
End Sub
End ClassC#:
كود :
class Car
{
protected string carName;
protected int carModel;
}كود :
Class Car
Protected carName As String
Protected carModel As Integer
End ClassC#:
كود :
class BMW: Car
{
public changeCarName(string value)
{
carName=value;
}
}كود :
Class BMW
Inherits Car
Public Sub New(ByVal value As String)
carName = value
End Sub
End Class