الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مقال عن البرمجة كائنية التوجيه

مغلق
بدأه MoaM في 31 يوليو 2005 · 14 رد · 1,061 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#2

ممتاز أخي العزيز مقالة بسيطة تصل كل مبتدئ يود التعلم لمبدأ ال OOP

لكن بعض الأضافات البسيطة و هي :

الكلاس الذي يورث منه يسمى : Base Class

اما الذي يرث فيسمى ال : Derived Class

ثم انت لم تتطرق الى انواع تعريف المتغيرات في الكلاس يعني الفرق بين ال (Private ,Public,Friend) أعرف انها معروفة للأغلب لكن فقط من أجل جعل المقالة متكاملة :

Private : لن تستطيع الوصول الى المتغير المعلن من هذا النوع حتى لو كنت وارث الكلاس الموجود فيه

Public : طبعا تستطيع الوصول اليه من أي مكان أردت

Friend : تستطيع الوصول اليه فقط من خلال الكلاس الذي يرث الكلاس المعلن فيه المتغير من هذا النوع

----

بالنسبة للمتغيرات المعلنة Private يمكن الوصول اليها و تغيير قيمها لكن بطريقة غير مباشرة و هي عن طريق MyBase التي تمكنك من الوصول الى ال Constructor الخاص بال Base Class

مثال بسيط:

'Base Class
Public Class SomeThing
Private m_FirstName As String
Private m_LastName As String
Public Sub New(ByVal FirstName As String,ByVal LastName As String)
m_FirstName=FirstName
m_LastName=LastName
End Sub
End Class

'Derived Class

Public Class SomeOne
Inherits SomeThing
Private m_Age As Byte
Public Sub New(ByVal FirstName As String,ByVal LastName As String,ByVal Age As Byte)
MyBase.New(FirstName,LastName)
m_Age=Age
End Sub
End Class

اذا كما رأيتم هذا مثال بسيط يمكننا (بواسطة MyBase) من الوصول الى ال Constructor) و التعديل في المتغيرات الممررة اليه حتى لو كانت Private

و السلام عليكم

#3

شكراً لك على ملاحظاتك

اقتباس
ثم انت لم تتطرق الى انواع تعريف المتغيرات في الكلاس يعني الفرق بين ال (Private ,Public,Friend) أعرف انها معروفة للأغلب لكن فقط من أجل جعل المقالة متكاملة

بالفعل لم أذكر الفرق بين أنواع المتغيرات Public, Private...

لأن المقال كما تعرف ليس عن البرمجة الكائنية التوجيه بشكل عام B)

#4
اقتباس
اذا كما رأيتم هذا مثال بسيط يمكننا (بواسطة MyBase) من الوصول الى ال Constructor) و التعديل في المتغيرات الممررة اليه حتى لو كانت Private

و السلام عليكم

غيرها مرة أخرى... لا أعتقد أنك تستطيع ذلك بنفس الطريقة!

#6

هل تستطيع أن تغير المتغيرات الخاصة بتلك الطريقة مرتين؟ مثلا:

Public Sub New(ByVal FirstName As String,ByVal LastName As String,ByVal Age As Byte)
MyBase.New(FirstName,LastName)
MyBase.New("Something Else",LastName) // ????? هل نستطيع؟
m_Age=Age
End Sub

تم تعديل هذه المشاركة بواسطة أبومازن في 2 أغسطس 2005 في 05:00

#7

شكرا يا MoaM

المقال جيد وتستحق التقدير

سبحان الله وبحمده سبحان الله العظيم

لا اله الا الله محمدا رسول الله

اللهم اغفر للمسلمين والمسلمات والمؤمنين والمؤمنات الاحياء منهم والاموات

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

حمل كريستال ريبورت 10 اربعه اصدارات

ww12kz.jpg

hashad.jpg

#8

أخي ابو مازن هذا أمر طبيعي لأن ال Constructor لا ينادى الا مرة واحدة أصلا ... اما اذا كان قصدك أننا لن نستطيع الوصول الى المتغيرات المعلنة ك Private في ال Base Class فسأجيبك و أقول بلا نستطيع ذلك عن طريق MyBase كما قلت و قد تصل اليهم دون الحاجة الى مناداة ال Constructor و بل مباشرة هكذا :

MyBase.X=5
MyBase.Y=4

مع العلم أن ال X و ال Y خاصيتين معلنتان كبرايفت في ال Base Class

#10

إذا كانت x y هما private فلا يمكنك ذلك!! تستطيع ذلك إذا كانا protected أو friend أو package مع بعض الشروط الأخرى!!

كما في مثالك m_FirstName هو private ولا يمكنك الوصول إليها مباشرة!

هذا والله أعلم!

#12

!!!

جديدة علي،وغريبة أيضا!!

هل جربتها؟

'Base Class
Public Class SomeThing
Private m_FirstName As String
Private m_LastName As String
Public Sub New(ByVal FirstName As String,ByVal LastName As String)
m_FirstName=FirstName
m_LastName=LastName
End Sub
End Class

'Derived Class

Public Class SomeOne
Inherits SomeThing
Private m_Age As Byte
Public Sub New(ByVal FirstName As String,ByVal LastName As String,ByVal Age As Byte)
MyBase.New(FirstName,LastName)
MyBase.m_FirstName= "Strange Access Modifier" ' هذه تعتبر دخول مباشر!
m_Age=Age
End Sub
End Class

ألا تصدر هذه الشفرة أية أخطاء؟!

#13

لا غريبة و لا اي شئ و انا فد جربتها مسبقا و تستطيع انت أيضا تجريبها او أحد من الاخوة و سترى انك تستطيع ذلك

#14

أه أسف لم ألاحظ أنك تريد الدخول ال "m_FirstName" طبعا لن تستطيع ذلك لكن كما قلت لك تستطيع ذلك فقط عن طريق ال Constructor (MyBase.New(15,15))

هذا الموضوع مغلق.

مواضيع مشابهة