تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الفصل(9):مدخل الى الفئاتClasses - الجزء الأول
#1
السلام عليكم ورحمة الله وبركاته
بسم الله الرحمن الرحيم

عندما نتحدث عن الفيجوال بيسك دوت نت فاننا نتحدث عن لغة كائنية(غرضية) التوجه...
كتوضيح: العالم من حولنا مليء بالكائنات وكل كائن له خصائصه وسماته وهذا ما يتم تطبيقه في لغة البرمجة كائنية التوجه حيث يتم اعتبار مساحة العمل كالعالم فتكون الكائنات وتحدد خصائصها وسماتها وتستخدم ظواهرها في عملك..

الآن سنتطرق الى أهم مواضيع البرمجة كائنية التوجه OOP وهو موضوع الفئات Classes..
الفئة(Class): عبارة عن قالب يمكنك بواستطه تشكيل الكائنات التي حددت صفاتها ومن ثم استخدمها..كتشبيه يمكن اعتبارها كقالب الأحذية -أعزكم الله- التي يمكنك بواستطها انشاء حذاء بمواصفات هذا القالب.

يتم انشاء Class باستخدام الكلمة المحجوزة Class وتنهيه بالعبارة المشهورة End Class
مثال:
كود :
[align=left][color=#000000][COLOR=#007700]Class [/color][COLOR=#0000BB]Class****

End [/COLOR][color=#007700]Class[/color][/COLOR]
[/align]

كما أسلفنا فان الفئة عبارة عن كائن له خصائصه وظواهره لذلك فان الكلاس يحتوي على أعضاء وظواهر تصفه حركاته
لنأخذ مثال:
كود :
[align=left][color=#000000][COLOR=#007700]Class [/color][COLOR=#0000BB]Person
[/COLOR][color=#007700]Public [/color][color=#0000BB]**** [/color][color=#007700]As [/color][COLOR=#0000BB]String
[/COLOR][color=#007700]Public [/color][color=#0000BB]Age [/color][color=#007700]As [/color][COLOR=#0000BB]Integer
[/COLOR][color=#007700]Public [/color][color=#0000BB]Weight [/color][color=#007700]As [/color][COLOR=#0000BB]Double
End [/COLOR][COLOR=#007700]Class
[/COLOR][/COLOR][/align]

الآن كما ترى فاننا قمنا ببناء فئة جديدة أسميناها Person وأضفنا لها خصائص الاسم والعمر والوزن
ولكي تستطيع الوصول الى عناصر الفئة فانظر المثال التالي:
كود :
[align=left][COLOR=#000000][COLOR=#007700]
[/COLOR][/COLOR][color=#000000][COLOR=#0000BB]Dim x [/color][color=#007700]As New [/color][COLOR=#0000BB]Person
x[/COLOR][color=#007700].[/color][color=#0000BB]**** [/color][color=#007700]= [/color][COLOR=#DD0000]"Lo2i"
[/COLOR][color=#0000BB]x[/color][color=#007700].[/color][color=#0000BB]Age [/color][color=#007700]= [/color][COLOR=#0000BB]20
x[/COLOR][color=#007700].[/color][color=#0000BB]Weight [/color][color=#007700]= [/color][COLOR=#0000BB]70
MsgBox[/COLOR][color=#007700]([/color][color=#DD0000]"**** is " [/color][color=#007700]& [/color][color=#0000BB]x[/color][color=#007700].[/color][color=#0000BB]**** [/color][color=#007700]& [/color][color=#0000BB]vbCrLf [/color][color=#007700]& [/color][color=#DD0000]"Age: " [/color][color=#007700]& [/color][color=#0000BB]Str[/color][color=#007700]([/color][color=#0000BB]x[/color][color=#007700].[/color][color=#0000BB]Age[/color][color=#007700]) & [/color][color=#0000BB]vbCrLf [/color][color=#007700]& [/color][color=#DD0000]"Weight: " [/color][color=#007700]& [/color][color=#0000BB]Str[/color][color=#007700]([/color][color=#0000BB]x[/color][color=#007700].[/color][color=#0000BB]Weight[/color][COLOR=#007700]))
[/COLOR][/COLOR][/align]

كما ترى فاننا قمنا بالاعلان عن متغير جديد من نوع الفئة التي صغنا معالمها وأسندنا لعناصرها قيم جديدة وبعدها استعلمنا عن القيم التي تحملها عناصرها
والنتيجة:

[h=3][/h]



لعلك انتبهت إلى أن الفئة بتركيبتها البرمجية تشبه كثيرا تركيبة Structure فيمكن صنع فئة من تركيبة Structure باستبدال كلمة Structure بكلمة Class
راجع: الفصل(3): التركيبات أنواعها واستخداماتها


لكن هناك شيء من الاختلاف بين الفئة والتركيبة Structue
1)
الفئة من النوع المرجعي بينما التركيبة Structure من النوع ذات القيمة
راجع: الفصل(8): الدوال والاجراءات
2)
الفئة يمكن أن لا تحتوي على أعضاء بينما التركيبة تصدر رسالة خطأ عند خلوها من العناصر
كود :
[COLOR=#000000][COLOR=#007700]Class empty
[/COLOR][COLOR=#0000BB]No Problems
End [/COLOR][color=#007700]Class[/color][/COLOR]

كود :
[align=left][color=#000000][COLOR=#0000BB]Structure [/color][COLOR=#007700]empty
[/COLOR][color=#DD0000]'Error ****: Error Structure '[/color][color=#007700]empty [/color][color=#0000BB]must contain at least one instance member variable [/color][color=#007700]or [/color][COLOR=#0000BB]Event declaration
End Structure
[/COLOR][/COLOR][/align]


أي ان التركيبة empty يجب أن تحتوي على عضو ابتدائي متغير أو اجراء


3)
المحدد الافتراضي للفئة هو Private
بينما المحدد الافتراضي لتركيبة الStructure هو Public

4)
يمكننا تطبيق مبدأ الورائة والاشتقاق على الفئات
بينما التركيبات فلا
___________________________
ملاحظة: يمكن للفئة أن تكون متداخلة Nested
مثال:
كود :
[align=left]
[color=#000000][COLOR=#007700]Class [/color][COLOR=#0000BB]Person
   [/COLOR][color=#007700]Class [/color][COLOR=#0000BB]****
      [/COLOR][color=#007700]Public [/color][color=#0000BB]First [/color][color=#007700]As [/color][COLOR=#0000BB]String
      [/COLOR][color=#007700]Public [/color][color=#0000BB]Last [/color][color=#007700]As [/color][COLOR=#0000BB]String
   End [/COLOR][COLOR=#007700]Class
   Public [/COLOR][color=#0000BB]Age [/color][color=#007700]As [/color][COLOR=#0000BB]Integer
End [/COLOR][COLOR=#007700]Class
[/COLOR][/COLOR][/align]


___________________________

ملاحظة أخرى:بامكاننا استخدام الفئة كوسيط نرسله للاجراءات والدوال بالطريقتين التي ذكرناها (الارسال بالمرجع أو بالقيمة) وبالرغم من انك ارسلته بالقيمة فان الجراء الحاضن سيغير قيمة المرسل بالرغم من ان ارسال الوسيط تم بالقيمة وهذا يتطابق مع الفرق الذي ذكرناه بالاعلى أن الفئة من النوع المرجعي...

كل ما سبق نظرة مبسطة جدا عن الفئات...


الآن تحدثنا أن الفئة تمثل كائن والكائن له أعضاء إذن الفئة لها أعضاء ويمكن تقسيمها لاربعة مكونات:

  1. الحقول(Fields)
  2. الطرق(Methods)
  3. الخصائص(properties)
  4. الأحداث(Events)
نبدأ بالحقول:


الحقول Fields
تعتبر الحقول أصغر وأبسط مكونات الفئة وما هي الا متغيرات عادية.
مثال:
كود :
[align=left][color=#000000][COLOR=#007700]Class [/color][COLOR=#0000BB]Person
Dim **** [/COLOR][color=#007700]As [/color][color=#0000BB]String   [/color][COLOR=#DD0000]'Field
Dim Age As Integer   '[/COLOR][COLOR=#0000BB]Field
[/COLOR][COLOR=#007700]...
...
...
[/COLOR][color=#0000BB]End [/color][COLOR=#007700]Class
[/COLOR][/COLOR][/align]


كما نرى فان هذه الفئة تحتوى على فئتين أو أكثر وهما **** و Age
أيضا من مجمل الفروق بين الفئة والتركيبة Structure فان حقول الفئة يكمن اسناد قيم لها وقت كتابة الفئة بخلاف التركيبة Structure
توضيح:
كود :
[align=left][color=#000000][COLOR=#007700]Class [/color][COLOR=#0000BB]Person
Dim **** [/COLOR][color=#007700]As [/color][color=#0000BB]String [/color][color=#007700]= [/color][COLOR=#DD0000]"Mr_MOHAMMED" 'No Problem
Dim Age As Age =18 '[/COLOR][COLOR=#0000BB]No Problem
End [/COLOR][COLOR=#007700]Class
[/COLOR][/COLOR][/align]

كود :
[align=left]
[COLOR=#000000][COLOR=#0000BB]Structure Person
Dim **** [/COLOR][color=#007700]As [/color][color=#0000BB]String [/color][color=#007700]= [/color][COLOR=#DD0000]"Mr_MOHAMMED" 'Error
Dim Age As Age =18 '[/COLOR][COLOR=#0000BB]Error
End Structure
[/COLOR][/COLOR][/align]


وبالتطرق لقضية أخرى : بامكانك تعريف حقل داخل الفئة من نوع هذه الفئة وهذا يفيد في خوارزميات المكدسة(LIFO) والطوابير(FIFO)
مثال:
كود :
[align=left][color=#000000][COLOR=#007700]Class [/color][COLOR=#0000BB]Person
Dim Im [/COLOR][color=#007700]As [/color][COLOR=#0000BB]Person
[/COLOR][COLOR=#007700]...
...
[/COLOR][color=#0000BB]End [/color][COLOR=#007700]Class
[/COLOR][/COLOR][/align]



_____________
مداخلة بسيطة:
المكدسة (LIFO) اختصار ل Last In First Out أي آخر ما يدخل أول ما يخرج
الطابور(FIFO) اختصار ل First In First Out أي أول ما يدخل أول ما يخرج
_____________

يمكن للحقول أن تكون على شكل مصفوفات
مثال:
كود :
[align=left][color=#000000][COLOR=#007700]Class [/color][COLOR=#0000BB]Person
Dim ****[/COLOR][color=#007700]() As [/color][color=#0000BB]String [/color][color=#007700]= {[/color][color=#DD0000]"Mr" [/color][color=#007700], [/color][color=#DD0000]"_" [/color][color=#007700], [/color][color=#DD0000]"MOHAMMED"[/color][COLOR=#007700]}
[/COLOR][color=#0000BB]End [/color][COLOR=#007700]Class
[/COLOR][/COLOR][/align]


لكن ماذا ان أردت حماية الحقل من تغيير قيمته ..يمكن ذلك باستخدام الكلمة المحجوزة ReadOnly وتعني للقراءة فقط
كود :
[align=left][color=#000000][COLOR=#007700]Class [/color][COLOR=#0000BB]Person
[/COLOR][color=#007700]Public [/color][color=#0000BB]ReadOnly Relegion [/color][color=#007700]As [/color][color=#0000BB]String [/color][color=#007700]= [/color][COLOR=#DD0000]"Islam and broud"
[/COLOR][color=#0000BB]End [/color][COLOR=#007700]Class
[/COLOR][/COLOR][/align]


وبذلك لن يستطيع المستخدم تغيير قيمة المتغير بعد جعله مقروء فقط
لحظة...بماذ تختلف ReadOnly عن Const أي ماذا يختلف هذا المتغير المحمي عن الثابت ان لن نقدر على تغيير قيمته
الاختلاف بينهما أن الثابت يجب عليك اسناد قيمته وقت كتابته أم المتغير المحمي فلك الخيار اما أن تسند قيمته وفت كتابته أو تعطيه قيمته عند أول عملية اسناد ولن يتغير بعدها في ي عملية اسناد أخرى


الطرق Methods


الطرق ما هي الا اجراءات ودوال ويمكنك مراجعتها من هذا الفصل:
[h=3]الفصل(8): الدوال والاجراءات[/h]
كيف يمكنني الاستفادة من الطرق:

1) بوساطة الطرق يمكنك صنع أحداث هذا الكائن
توضيح:
الآن نحن البشر نستطيع المشي يمكننا تطبيق ذلك بكل سهولة في عالم البرمجة الكائنية
لنقم بصنع فئة نسميها انسان ونطبق عليها المبدأ السابق:
في داخل جسم الفئة Person نضيف اجراء جديد نسميه Walk وداخل هذا الاجراء نحدد كيفية المشي
كود :
[align=left][color=#000000][COLOR=#007700]Class [/color][COLOR=#0000BB]Person
Sub walk[/COLOR][COLOR=#007700]()
....
....
....
[/COLOR][COLOR=#0000BB]End Sub
End [/COLOR][COLOR=#007700]Class
[/COLOR][/COLOR][/align]


وطريقة استدعاء هذا الاجراء هي كالتالي:
كود :
[align=left]
[color=#000000] [COLOR=#0000BB]Dim Lo2i [/color][color=#007700]As [/color][COLOR=#0000BB]Person
Lo2i[/COLOR][color=#007700].[/color][color=#0000BB]Walk[/color][COLOR=#007700]()
[/COLOR][/COLOR][/align]



وبهذا نكون قد صنعنا متغير من النوع Person أسميناه Lo2i (سامحني يا لؤي بدي اغلبك معي Big Grin) وقمنا باستدعاء اجراء المشي الخاص بLo2i ...


2) مثال رائع وجدته في كتاب الاستاذ تركي العسيري...
باستخدام الطرق يمكنك اختصار الاسطر والوقت في اسناد القيم لعناصر الفئة
توضيح:
كود :
[align=left][color=#000000][COLOR=#007700]Class [/color][COLOR=#0000BB]PersonRecord
        [/COLOR][color=#007700]Public [/color][color=#0000BB]**** [/color][color=#007700]As [/color][COLOR=#0000BB]String
        [/COLOR][color=#007700]Public [/color][color=#0000BB]Age [/color][color=#007700]As [/color][COLOR=#0000BB]Integer
        [/COLOR][color=#007700]Public [/color][color=#0000BB]Address [/color][color=#007700]As [/color][COLOR=#0000BB]String
End [/COLOR][COLOR=#007700]Class
[/COLOR][/COLOR][/align]


في المثال السابق تم صنع فئة جديدة سميت PersonRecord وتم اضافة بضعة حقول لها **** و Age وAdress ويمكننا اسناد القيم لتلك الحقول بالشكل التالي:
كود :
[align=left]
[color=#000000][COLOR=#0000BB]Dim PersonObject [/color][color=#007700]As New [/color][COLOR=#0000BB]PersonRecord


PersonObject[/COLOR][color=#007700].[/color][color=#0000BB]**** [/color][color=#007700]= [/color][COLOR=#DD0000]"Turki"
[/COLOR][color=#0000BB]PersonObject[/color][color=#007700].[/color][color=#0000BB]Age [/color][color=#007700]= [/color][COLOR=#0000BB]99
PersonObject[/COLOR][color=#007700].[/color][color=#0000BB]Address [/color][color=#007700]= [/color][COLOR=#DD0000]"Suadia"
[/COLOR][/COLOR][/align]


لكن كيف تفيدنا الطرق باختصار الأسطر والوقت
دعنا نرجع لذات الفئة, باضافة اجراء داخل الفئة لعملية اسناد القيم الثلاثة:
كود :
[align=left][color=#000000][COLOR=#0000BB]    [/color][color=#007700]Class [/color][COLOR=#0000BB]PersonRecord
        [/COLOR][color=#007700]Public [/color][color=#0000BB]**** [/color][color=#007700]As [/color][COLOR=#0000BB]String
        [/COLOR][color=#007700]Public [/color][color=#0000BB]Age [/color][color=#007700]As [/color][COLOR=#0000BB]Integer
        [/COLOR][color=#007700]Public [/color][color=#0000BB]Address [/color][color=#007700]As [/color][COLOR=#0000BB]String

Sub SetValues[/COLOR][color=#007700]([/color][color=#0000BB]ByVal Person**** [/color][color=#007700]As [/color][color=#0000BB]String[/color][color=#007700],[/color][color=#0000BB]ByVal PersonAge [/color][color=#007700]As [/color][color=#0000BB]Integer[/color][color=#007700], [/color][color=#0000BB]ByVal PersonAddress [/color][color=#007700]As [/color][color=#0000BB]String[/color][COLOR=#007700])

        [/COLOR][color=#0000BB]**** [/color][color=#007700]= [/color][COLOR=#0000BB]Person****
        Age [/COLOR][color=#007700]= [/color][COLOR=#0000BB]PersonAge
        Address [/COLOR][color=#007700]= [/color][COLOR=#0000BB]PersonAddress
    End Sub

End [/COLOR][COLOR=#007700]Class  
[/COLOR][/COLOR][/align]


الشرح:
اضفنا اجراء جديد باسم SetValues ومهمته اسناد القيم للحقول الثلاثة وفي هذا الاجراء نقوم بتمرير ثلاثة وسيطات حسب الحقول المراد استغراقها وبالتالي فان عملية الاسناد اصبحت بالشكل التالي:
كود :
[align=left]
[color=#000000][COLOR=#0000BB]Dim PersonObject [/color][color=#007700]As New [/color][COLOR=#0000BB]PersonRecord
PersonObject[/COLOR][color=#007700].[/color][color=#0000BB]SetValues[/color][color=#007700]([/color][color=#DD0000]"Turki"[/color][color=#007700], [/color][color=#0000BB]99[/color][color=#007700], [/color][color=#DD0000]"Suadia"[/color][COLOR=#007700])
[/COLOR][/COLOR][/align]




[SIZE=5]مبدأ إعادة التعريف OverLoading
[/SIZE]
من مبادئ البرمجة الكائنية التوجه مبدأ إعادة تعريف الطرق بوسيطات مختلفة وجوبا:
مثال:
لدينا الطريقة OverTest سنقيم عليها مبدا إعادة التعريف:
كود :
[align=left][color=#000000][COLOR=#0000BB]Sub OverTest[/color][COLOR=#007700]()
[/COLOR][COLOR=#0000BB]End Sub
[/COLOR][/COLOR][/align]

كود :
[align=left][color=#000000][COLOR=#0000BB]Sub OverTest[/color][color=#007700]([/color][color=#0000BB]ByVal Var1 [/color][color=#007700]As [/color][color=#0000BB]Integer[/color][COLOR=#007700])
[/COLOR][COLOR=#0000BB]End Sub
[/COLOR][/COLOR][/align]

كود :
[align=left][color=#000000][COLOR=#0000BB]Sub OverTest[/color][color=#007700]([/color][color=#0000BB]ByVal Var2 [/color][color=#007700]As [/color][color=#0000BB]String[/color][COLOR=#007700])
[/COLOR][COLOR=#0000BB]End Sub
[/COLOR][/COLOR][/align]


قد تلاحظ أننا قمنا بتغيير نوع المتغير Var1 في الاجراء الثالث بالرغم من تغيير المتغير وهذا من أسس مبدأ إعادة الوراثة...
اذ ان الأمر اعادة التعريف التالية تصدر خطأ لاننا بالرغم من تغيير اسم الوسيط لم نغير نوعه ولك التجربة
كود :
[align=left][color=#000000][COLOR=#0000BB]Sub OverTest [/color][color=#007700]( [/color][color=#0000BB]ByVal Var1 [/color][color=#007700]As [/color][color=#0000BB]Integer[/color][COLOR=#007700])
[/COLOR][COLOR=#0000BB]End Sub
[/COLOR][/COLOR][/align]

كود :
[align=left][color=#000000][COLOR=#0000BB]Sub OverTest [/color][color=#007700]( [/color][color=#0000BB]ByVal Var2 [/color][color=#007700]As [/color][color=#0000BB]Integer[/color][COLOR=#007700])
[/COLOR][COLOR=#0000BB]End Sub
[/COLOR][/COLOR][/align]

معوقات عملية إعادة التعريف
  • السبب الذي وضحناه بالاعلى..ثبات نوع الوسيط
  • تغيير نوع الارسال يصدر خطأ:
المثال التالي يصدر خطأ لتغيير نوع ارسال الوسطيات
كود :
[align=left][color=#000000][COLOR=#0000BB]Sub OverTest [/color][color=#007700]( [/color][color=#0000BB]ByVal Var1 [/color][color=#007700]As [/color][color=#0000BB]Integer[/color][COLOR=#007700])
[/COLOR][COLOR=#0000BB]End Sub
[/COLOR][/COLOR][/align]

كود :
[align=left][color=#000000][COLOR=#0000BB]OverTest [/color][color=#007700]( [/color][color=#0000BB]ByRef Var2 [/color][color=#007700]As [/color][color=#0000BB]Integer[/color][COLOR=#007700])
[/COLOR][COLOR=#0000BB]End Sub
[/COLOR][/COLOR][/align]

  • تغيير محدد الوصول أيضا يصدر خطأ
المثال التالي يصدر خطأ لتغيير محدد الوصول
كود :
[align=left][color=#000000][COLOR=#007700]Public [/color][color=#0000BB]Sub OverTest [/color][color=#007700]( [/color][color=#0000BB]ByVal Var1 [/color][color=#007700]As [/color][color=#0000BB]Integer[/color][COLOR=#007700])
[/COLOR][COLOR=#0000BB]End Sub
[/COLOR][/COLOR][/align]
كود :
[align=left][COLOR=#000000][COLOR=#0000BB]
[/COLOR][/COLOR][color=#000000][COLOR=#007700]Private [/color][color=#0000BB]Sub OverTest [/color][color=#007700]( [/color][color=#0000BB]ByRef Var2 [/color][color=#007700]As [/color][color=#0000BB]Integer[/color][COLOR=#007700])
[/COLOR][COLOR=#0000BB]End Sub
[/COLOR][/COLOR][/align]

في النهاية عند تطبيق مبدأ اعادة التعريف يستحسن استخدام الكلمة المحجوزة OverLoads لتسريع عمل المترجم
مثال:
كود :
[align=left][color=#000000][COLOR=#0000BB]OverLoads Sub OverTest[/color][color=#007700]([/color][color=#0000BB]ByVal Var1 [/color][color=#007700]As [/color][color=#0000BB]Integer[/color][COLOR=#007700])
[/COLOR][COLOR=#0000BB]End Sub
[/COLOR][/COLOR][/align]

كود :
[align=left][color=#000000][COLOR=#0000BB]OverLoads Sub OverTest[/color][color=#007700]([/color][color=#0000BB]ByVal Var2 [/color][color=#007700]As [/color][color=#0000BB]String[/color][COLOR=#007700])
[/COLOR][COLOR=#0000BB]End Sub
[/COLOR][/COLOR][/align]

تكمن أهمية مبدأ إعادة التعريف في تسهيل عمل المبرمج :
المثال التالي سيوضح كيف:
الآن عندما نطلب من المستخدم ادخال عمره هل نضمن أنه سيدخله حرفيا ام رقميا...بهذا ستضطر لخوارزمية اكثر تعقيدا بدءا بقنص الأخطاء الواردة مرورا بتحويل المدخلات في حال خالفت المطلوب انتهاء بخطأ وارد في حال فشل العمليتين السابقتين..
لذلك يفيدنا مبدأ إعادة التعريف في تخطي هذا الخطأ كالتالي:
كود :
[align=left][color=#000000][COLOR=#007700]Class [/color][COLOR=#0000BB]Person

Overloads Sub SetAge[/COLOR][color=#007700]([/color][color=#0000BB]ByVal Age [/color][color=#007700]As [/color][color=#0000BB]String[/color][COLOR=#007700])
[/COLOR][COLOR=#0000BB]End Sub

Overloads Sub SetAge[/COLOR][color=#007700]([/color][color=#0000BB]ByVal Age [/color][color=#007700]As [/color][color=#0000BB]Integer[/color][COLOR=#007700])
[/COLOR][COLOR=#0000BB]End Sub

End [/COLOR][COLOR=#007700]Class
[/COLOR][/COLOR][/align]


-----------------------------------
In Form.Load

كود :
[color=#000000][COLOR=#0000BB]Dim Lo2i [/color][color=#007700]As New [/color][COLOR=#0000BB]Person
Lo2i[/COLOR][color=#007700].[/color][color=#0000BB]SetAge[/color][color=#007700]([/color][color=#0000BB]19[/color][COLOR=#007700])
[/COLOR][color=#0000BB]Lo2i[/color][color=#007700].[/color][color=#0000BB]SetAge[/color][color=#007700]([/color][color=#DD0000]"تسعة عشر"[/color][COLOR=#007700])
[/COLOR][/COLOR]

الآن في حال ادخال المستخدم قيمة حرفية سيتم التعامل معها وفق الاجراء الاول الذي يستقبل نصا بينما إن أدخل قيمة رقمية سيتم التعامل معها وفق الاجراء الثاني الذي يستقبل رقما بهذا نتخطى احتمالات الوقوع في خطأ من جراء ادخال قيمة غير النوع المحدد

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



بهذا نكون قد أنهينا فصلنا لهذا اليوم وسنتحدث في الفصل القادم عن الجزء المتبقي من الفئات ان شاء الله

مع تحيات:
Lo2i و Mohammed Asaad

انتظروا الدرس القادم
الرد }}}
تم الشكر بواسطة:
#2
بارك الله فيكم على المجهودات الطيبة
واشاء الله في ميزان حسناتكم
الرد }}}
تم الشكر بواسطة:
#3
بارك الله فيك
الرد }}}
تم الشكر بواسطة:
#4
صعب :confused:
الرد }}}
تم الشكر بواسطة:
#5
green.grass52 كتب :صعب :confused:
أخي الكريم ,, لا مش صعب ....
بالعكس الراجل بيتكلم في أبسط أمور الفئات
أنت ركز شويه بس والله بيفرجها .
Abu Ehab : Microsoft Partner  & Systems Developer
 Youtube   Facebook    Twitter   
الرد }}}
تم الشكر بواسطة:
#6
لماذا تظهر الاكواد بهذه الشكل

http://store6.up-00.com/2017-05/149613508873731.png
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  الفصل(8): الدوال والاجراءات B3dak Hbebe 3 19,655 15-08-18, 09:20 AM
آخر رد: nagoma
  الفصل(5):صنع القرار...الجزء الأول-الجمل الشرطية Omar Mekkawy 4 4,167 10-08-13, 05:39 PM
آخر رد: Omar Mekkawy
  الفصل(3): التركيبات أنواعها واستخداماتها Omar Mekkawy 4 4,155 10-08-13, 05:32 PM
آخر رد: Omar Mekkawy
  الفصل (1) : الفيجوال بيسك دوت نت (لمحة تعريفية) Omar Mekkawy 2 3,492 27-07-13, 02:39 PM
آخر رد: green.grass52
  الفصل (0) : دورة تعلم معنا فيجوال بيسك دوت نيت Omar Mekkawy 7 4,823 18-07-13, 06:29 PM
آخر رد: el@nsary
  الفصل(16): مدخل لمسارات التنفيذ Threading B3dak Hbebe 3 3,778 27-04-13, 10:58 AM
آخر رد: خليل اسماعيل
  الفصل(15): الفئتان Stack و Queue B3dak Hbebe 2 3,225 27-04-13, 09:20 AM
آخر رد: خليل اسماعيل
  الفصل(12): Oop بالتفصيل...الجزء الثاني B3dak Hbebe 3 3,901 27-04-13, 09:16 AM
آخر رد: خليل اسماعيل
  الفصل (11) :oop بالتفصيل ..الجزء الاول Easy4ever 3 3,569 27-04-13, 09:08 AM
آخر رد: خليل اسماعيل
  الفصل(10):مدخل الى الفئات..الجزء الثاني B3dak Hbebe 2 3,204 27-04-13, 08:59 AM
آخر رد: خليل اسماعيل

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


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