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



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





الكلاس موديول class modules الجزء الثالث

بسم الله والحمد لله والصلاة والسلام على رسول الله اهلا وسهلا بكم اخوانى الاحباء فى درس جديد عن الكلاس موديول النهارده ه ..



06-10-2018 12:10 صباحا
Eslam Abdullah
menu_open
مشرف على لغات برمجة آخرى
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 03-10-2017
رقم العضوية : 852
المشاركات : 1158
الجنس : ذكر
تاريخ الميلاد : 1-9-1995
الدعوات : 2
يتابعهم : 3
يتابعونه : 55
قوة السمعة : 6904
الاعجاب : 1950
 offline 

بسم الله والحمد لله والصلاة والسلام على رسول الله
اهلا وسهلا بكم اخوانى الاحباء فى درس جديد عن الكلاس موديول


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

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

اذا هات المثال الأول ايها الأعربى
المثال 1

.........................................................

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

Sub Alsaqr_Eslam()
Dim E As Long
Let E = 99999
MsgBox E
End Sub

هنا لما أرفقنا قيمه كتبنا قبل المتغير E كلمة Let
حمودى بيقولى ايه دا طب ما انا بقى مش بكتبها وبتطلع صح
دا ياحمودى لان Let بيان اختيارى Optional statement فإن لم يكتب شئ فإفتراضيا تكن Let

 يبقى الزتونه من كل هذا وذاك ان عند ارسال قيمه نستخدم Let وإن استقبال قيمة نستخدم Get

طيب وأنا هنا محتاج ارسل قيمه او اسم لكائن الطالب اذا نكتب الاسطر التاليه داخل الكلاس

Public Property Get StName() As String
    StName = "Eslam Abdullah"
End Property

استخدمنا Public لانى عايز استخدمها فى الموديول العادى واستخدمنا Property Get لانى اقوم بارسال قيمه
وكتبنا StName لانه اسم الخاصيه ثم () لانه اجراء واستخدمنا As String لان النتيجة نص
والسطر الثانى نرفق النص باسم الطالب داخل اسم الخاصيه ثم End Property لانهاء الاجراء

دا معناه احلوين انه عند استخدام الخاصية StName للكلاس Student افتراضيا سيكون Eslam Abdullah
هيا بنا نلعب قصدى نجرب كود فى موديول عادى وليكن الكود التالى

Sub Alsaqr_Eslam2()
Dim St As New Student
MsgBox St.StName
End Sub

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

......................................
نحذف كدا المثال السابق دا كان مقدمه بس للمثال دا

قولنا ازاى نستخدم Get
هنا بقى هستخدم Get واحصل على قيمه من خاصية Private
ومن ثم اقوم بارسال قيمه وفق شروط معينه لخاصية Public
شكلك توهت منى أخر توهان ، الموضوع بسيط فقط اتبع التالى
...................................................................................................

اول شئ سننشأ خاصيتين احدهم لاسم الطالب والاخر لعمر الطالب كالتالى

تمام طيب انا هكتب خاصية مساعده ويكون استخدامها داخل الكلاس فقط ونعطيها اسم AStName اختصار لـ Assistant student name
بمعنى اسم الطالب المساعد
 
طيب يلا ياحلوين اكتبوا الخاصيتين دول عندكم

Private AStName As String
Public StAge As Double

تمام كدا ، قولوا تمام ياقوم
القوم: تمام يامستر اسلام

نيجى بقى عايزين نرفق قيمه لخاصية اسم الطالب وهتكون اسمها StName كيف ذلك ياحسام
قال حوسو: يتم هذا على خطوتين الاول وتتلخص الخطوه الاولى فى تحصيل قيمة الخاصيه العامة من الخاصية الخاصه
ومن ثم نقوم بارسال قيمه بالشروط المحدده للخاصيه الخاصه والتى بدورها سترسل قيمتها للخاصيه العامه
برافوا عليك احوسو تاخد نجمه تعالوا بقى نفسر كلام حوسو واحده واحده
بعد الاعلان عن الخاصيتين اعلاه واحده خاصه وواحده عامه
نقوم بالاعلان عن خاصيه عامه كالتالى

Public Property Get StName() As String
    StName = AStName
End Property

وكما شرحت فى المثال الاول انا كدا بحصل قيمة الخاصية StName من الخاصيه الخاصه AStName
بمعنى ان قيمة الخاصية AStName هتكون فى النهاية هيا قيمة الخاصية StName

الخطوه القادمه هى ارسال قيمه للخاصية StName وارسال يعنى هستخدم Let طيب شكل الكود فى Let نفس Get
الا انه يختلف بأمر واحد وهو أشبه ببرمجة الدوال يعنى هنستخدم الباراميترات ولكن بعكس منطق الدوال
نستخدم فقط لا أكثر ولا أقل باراميتر واحد وهو يعد قيمة الخاصية نفسها
ولا يمكن استخدام اسم الخاصية داخل اجراء الخاصية ولذلك نستخدم خاصية مساعده وارسال القيمة بإجراء
Let ومن ثم تحصيلها بإجراء Get
وقولت هنكتب شرط وليكن الشرط هو ان الاسم لا يقل حرفين
وكفايه كدا كمثال يبقى هنستخدم الدالة اللى بتعد النص وهى دالة Len والدالة الشرطية If

واخيرا نكتب الخاصية StName بإستخدام Let كالتالى

Public Property Let StName(ByVal name As String)
If Len(name) < 2 Then
    AStName = "The Name assigned is too short"
Else
    AStName = name
End If
End Property

نفسر الأمور الزياده بس فى السطر الاول تم استخدام باراميتر بالمتغير name من النوع string أى من النوع النصى وهو قيمة الخاصية
واستخدمت ByVal اى استخدام قيمة المتغير وليس المرجع
واستخدمت دالة If و Len لوضع شرط عدم تخطى حرفين وفى حالة كان الاسم اقل من حرفين تكن النتيجة
ان قيمة الخاصية الخاصه 
AStName هى النص "The Name assigned is too short"
واما اذا كان اكثر من حرفين تكن 
النتيجة
ان قيمة الخاصية الخاصه 
AStName هى النص نفسه اى الاسم

طبعا انا بشرح ما يخص الكلاس فقط باقى الامور من المفترض انك عارفها
او ترجع تشوفها فى الدروس السابقه ومن ثم تكمل هنا

بكدا الكود النهائى للكلاس Student كالتالى

Private AStName As String
Public StAge As Double

Public Property Get StName() As String
    StName = AStName
End Property

Public Property Let StName(ByVal name As String)
If Len(name) < 2 Then
    AStName = "The Name assigned is too short"
Else
    AStName = name
End If
End Property

 
تبقى خطوة أخيره وهو تجربة الكلاس بكود داخل موديول عادى وليكن نستخدم الكود التالى
Sub Alsaqr_Eslam()
Dim St As New Student
St.StName = "E"
MsgBox St.StName
End Sub


طبعا مفيش جديد بالنسبه للكود داخل الموديول العادى
اذا عند تفعيل الكود تكن النتيجة هى الرساله "The Name assigned is too short"
لانه اقل من حرفين وعند كتابة اسم بحرفين أو أكثر تكن النتيجة الاسم نفسه


وهنا يكون الختام فى دروس الكلاس موديول

تعلمنا ما هو الكلاس وما هو الاوبجيكت
وتعلمنا استخدام الخاصيات أى الـ
Properties
وكيفية استخدامها Public و Private
تعلمنا كيفية وضع السلوك أى الـ m*ethod
وكيف نرفق قيمة افتراضية او حسب اوامر محددة ووضع شروط لقيمة الخاصية
واستخدام الامرين Let و Get

أرجوا أن تكونوا استفدتم بالكلاس وأن يسهل عليكم أمور كثيره فى عملكم مع الـ VBA
...............................................................................................................
كان معكم أخوكم فى الله اسلام عبدالله
دمتم فى حفظ الله ورعايته 81

...............................................................................................................

أثارت هذه المشاركة إعجاب: الصقر، YasserKhalil، ابراهيم الحداد،





06-10-2018 07:08 صباحا
مشاهدة مشاركة منفردة [1]
الصقر
menu_open عضوية موثقة
مراقب عام
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 2
المشاركات : 1413
الجنس : ذكر
الدعوات : 12
يتابعهم : 0
يتابعونه : 359
قوة السمعة : 11277
الاعجاب : 2793
 offline 
look/images/icons/i1.gif الكلاس موديول class modules الجزء الثالث

جزاكم الله خيرا يا غالى
3123142113


أثارت هذه المشاركة إعجاب: YasserKhalil، Eslam Abdullah،




06-10-2018 08:33 صباحا
مشاهدة مشاركة منفردة [2]
YasserKhalil
menu_open عضوية موثقة
مراقب عام
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 4651
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 11
يتابعهم : 0
يتابعونه : 318
قوة السمعة : 13379
الاعجاب : 4951
 offline 
look/images/icons/i1.gif الكلاس موديول class modules الجزء الثالث
بارك الله فيك أخي الحبيب إسلام وجزاك الله خيراً
دروس رائعة وتقديم مميز ورائع

أثارت هذه المشاركة إعجاب: Eslam Abdullah، الصقر،




06-10-2018 09:13 صباحا
مشاهدة مشاركة منفردة [3]
Eslam Abdullah
menu_open
مشرف على لغات برمجة آخرى
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 03-10-2017
رقم العضوية : 852
المشاركات : 1158
الجنس : ذكر
تاريخ الميلاد : 1-9-1995
الدعوات : 2
يتابعهم : 3
يتابعونه : 55
قوة السمعة : 6904
الاعجاب : 1950
 offline 
look/images/icons/i1.gif الكلاس موديول class modules الجزء الثالث
مشكور مروركم العطر أساتذنى الاحباء 81

أثارت هذه المشاركة إعجاب: YasserKhalil، الصقر،





المواضيع المتشابهه
عنوان الموضوع الكاتب الردود الزوار آخر رد
الكلاس موديول class module الجزء الأول Eslam Abdullah
12 552 YasserKhalil
الكلاس موديول class modules الجزء الثانى Eslam Abdullah
5 155 Eslam Abdullah

الكلمات الدلالية
الكلاس ، موديول ، class ، modules ، الجزء ، الثالث ،


 







اخلاء مسئولية: يخلى منتدى أكاديمية الصقر للتدريب مسئوليته عن اى مواضيع او مشاركات تندرج داخل الموقع ويحثكم على التواصل معنا ان كانت هناك اى إنتهاكات تتضمن اى انتهاك لحقوق الملكية الفكرية او الادبية لاى جهة - بالتواصل معنا من خلال نموذج مراسلة الإدارة .وسيتم اتخاذ الاجراءات اللازمة.
سياسة النشر: التعليقات المنشورة لا تعبر عن رأي منتدى أكاديمية الصقر للتدريب ولا نتحمل أي مسؤولية قانونية حيال ذلك ويتحمل كاتبها مسؤولية النشر.



الساعة الآن 07:38 مساء

أعلن هنا
أعلن هنا
أعلن هنا