الدرس السادس -تابع المتغيرات ( امكانية الوصول) - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184) +--- الموضوع : الدرس السادس -تابع المتغيرات ( امكانية الوصول) (/showthread.php?tid=4883) |
الدرس السادس -تابع المتغيرات ( امكانية الوصول) - RaggiTech - 02-10-12 كاتب الموضوع : المخلب الجارح
امكانية الوصول :Public: نستطيع استعمال هذة الكلمة المحجوزة داخل module , class ,structure , namespace ولا نستخدمها داخل الاجرائات الفرعية وتتضمن المتغيرات التى نريد الوصول المباشر اليها من داخل او خارج الكتلة البرمجية Protected: نسطيع استخدام هذة الكلمة المحجوزة في مستوى ال Class فقط ولا نستخدمها بداخل module او داخل الاجرائات الفرعية ضمن ال Class وتتضمن المتغيرات التى تكون امكانية الوصول اليها من داخل ال Class او من خلال الكلاس المشتق drived class Friend: نستطيع استعمال هذة الكلمة المحجوزة داخل module, class ,structure , namespace ولا نستخدمها داخل الاجرائات الفرعية وتتضمن المتغيرات التى نريد الوصول المباشر اليها من داخل او خارج الكتلة البرمجية ولكن ظمن نفس المشروع وهذا هو الاختلاف الاساسي بين Public و Friend فالاول يمكن الوصول الية من داخل مشروع اخر اما الثاني فيمكن الوصول الية فقط ضمن نفس المشروع Protected Friend: نسطيع استخدام هذا النوع من الاعلان في مستوى ال Class فقط ولا نستخدمها بداخل module او داخل الاجرائات الفرعية ضمن ال Class هذة الكلمة المحجوزة هي اتحاد كل من الكلمتين المحجوزتين وتستخدم لامكانية الوصول مع الكود ضمن نفس ال Class او من خلال الكلاس المشتق drived class وذلك ضمن نفس المشروع Private: تستخدم هذة الكلمة المحجوزة للاعلان عن المتغيرات داخل module, class,structure فقط ولا تستخدم داخل الاجرائات الفرعية وتستخدم للاعلان عن المتغيرات المستخدمة ضمن نفس module او class او structure Static: يمكنك استخدام هذة الكلمة المحجوزة مع المتغيرات بداخل الاجرائات الفرعية او الكتل البرمجية بداخل تلك الاجرائات مثل جملة For او جملة Try..Catch والمتغير من هذا النوع يمكنة الاحتفاظ بقيمتة وعدم تدميرها قيمتة الى نهاية البرنامج : Shared نستطيع استعمال هذة الكلمة المحجوزة داخل module, class,structure, namespace ولا نستخدمها داخل الاجرائات الفرعية وهذة الكلمة المحجوزة تعني ان كل النسخ من class او structure سوف تتشارك نفس المتغيرات التى تم الاعلان بانها Shared مثلا لو قمنا بالاعلان عن متغير من هذا النوع بداخل كلاس ثم قمنا بانشاء 3 نسخ من هذا الكلاس و قمنا بتغيير قيمتة ذلك المتغير بواسطة احد النسخ الثلاث فان باقي النسخ سوف تتشارك تلك القيمة الجديدة. Shadows ستخدم هذة الكلمة المحجوزة للاعلان عن المتغيرات داخل module, class , structure فقط ولا تستخدم داخل الاجرائات الفرعية وتستخدم لكي تقوم باخفاء المتغير عن المتغير الذي يساوية بالاسم بالكلاس الاساسي أي الموروث منة أي يمكن باستخدام هذة الكلمة الاعلان عن متغير بنفس اسم متغير بالكلاس الاب او الجد وهكذا وهذا المثال يوضح ذلك كود : [color=#000000][COLOR=#0000bb][/color][color=#007700]Public Class [/color][COLOR=#0000bb]Person ReadOnly نستطيع استعمال هذة الكلمة المحجوزة داخل module, class , structure , namespace ولا نستخدمها داخل الاجرائات الفرعية ومن معنى هذة الكلمة نفهم عملها فهي تقوم بالاعلان عن متغيرات للقرائة فقط ولا يمكن تعديلها وهي مفيدة جدا ومثال عن كيفية الاعلان باستخدامها كود : [color=#000000][COLOR=#0000bb][/color][color=#007700]Public [/color][color=#0000bb]ReadOnly MaxEmployees [/color][color=#007700]As [/color][color=#0000bb]Integer [/color][color=#007700]= [/color][COLOR=#0000bb]100 كما اننا نستطيع ان نعطي قيم لمتغيرات من هذا النوع عن عمل نسخة من كلاس وذلك داخل دالة البناء مثال كود : [color=#000000][COLOR=#0000bb][/color][color=#007700]Public Class [/color][COLOR=#0000bb]EmployeeCollection Dim نستخدم هذة الكلمة عندما نريد الاعلان عن متغيرات عادية ليست ذا متطلبات معينة واساس عملها انها تخبر الفيجوال بانك تريد الاعلان عن متغير ويمكنك حذف هذة الكلمة عند الاعلان بواسطة احدى هذة الكلمات Public, Protected, Friend, Protected Friend, Private, Static, or ReadOnly. حقيقتا اذا قمت بالاعلان عن متغير بواسطة احدى هذة الكلمات فان محرر كود الفيجوال سيقوم بحذف كلمة Dim اذا كنت قد قمت بتضمينها من قبل مثلا اكتب كود : [color=#000000][COLOR=#0000bb][/color][color=#007700]Public [/color][color=#0000bb]Dim X [/color][color=#007700]as [/color][COLOR=#0000bb]Integer وانتظر ماذا سيحدث والمتغيرات المعلنة بواسطة كلمة Dim تعتبر في الحقيقة Private انظر الى هاتين الجملتين انهما متساويتين كود : [color=#000000][COLOR=#0000bb]Dim num_people [/color][color=#007700]As [/color][COLOR=#0000bb]Integer WithEvents هذة الكلمة المحجوزة تقوم بالاعلان عن تمتلك احداث يمكن التعامل معها تماما كمثل الاحداث الاخرى باللغة كود : [color=#000000][COLOR=#0000bb][/color][color=#007700]Private [/color][color=#0000bb]WithEvents Face [/color][color=#007700]As [/color][COLOR=#0000bb]PictureBox وبعد الاعلان عن متغير بواسطة هذة الكلمة يقوم الفيجوال مباشرة باضافة هذا المتغير الى القائمة المنسدلة Class Name التى توضح ماهي مكونات البرنامج الرسومية وغيرها التي تمتلك احداث وايضا يقوم باضافة احداث لذلك المتغير بالقائمة المنسدلة Method Name ولقد تكلمنا عن هذا المتغير بدرس الادوات --------- New تقوم هذة الكلة المحجوزة باخبار الفيجوال بيسك بانشاء نسخة جديدة من Object الذي تريد انشاء نسخة منة وبدونها فان المتغير الذي قمت بالاعلان عنة ليس لة مرجع وتكون قيمتة الابتدائية تساوي Nothing مثال ليكن لدينا كلاس اسمة Emp ونريد انشاء نسختين منة على هذا الشكل كود : [color=#000000][COLOR=#0000bb] Dim E1 [/color][color=#007700]As [/color][COLOR=#0000bb]Emp كود : [color=#000000][COLOR=#0000bb] Dim E2 [/color][color=#007700]As New [/color][COLOR=#0000bb]Emp كلتا الجملتين صحيحة ولكن الجملة الثانية افضل لننا قمنا بجمع الجملتين السابقتين في جملة واحدة الاعلان عن Array هنالك عدة طرق للاعلان عن المصفوفات 1 – الاعلان واسناد القيمة ويجب ان لا نكتب حجم المصفوفة بهذة الحالة كود : [color=#000000][COLOR=#0000bb]Dim arr[/color][color=#007700]() As [/color][color=#0000bb]Integer [/color][color=#007700]= {[/color][color=#0000bb]1[/color][color=#007700], [/color][color=#0000bb]1[/color][color=#007700], [/color][color=#0000bb]2[/color][color=#007700], [/color][color=#0000bb]3[/color][color=#007700], [/color][color=#0000bb]5[/color][color=#007700], [/color][color=#0000bb]8[/color][color=#007700], [/color][color=#0000bb]13[/color][color=#007700], [/color][color=#0000bb]21[/color][color=#007700], [/color][color=#0000bb]33[/color][color=#007700], [/color][color=#0000bb]54[/color][color=#007700], [/color][color=#0000bb]87[/color][color=#007700]} [/color][COLOR=#0000bb]ذات بعد واحد كود : [color=#000000][COLOR=#0000bb]Dim arr[/color][color=#007700]( , ) As [/color][color=#0000bb]Integer [/color][color=#007700]= { {[/color][color=#0000bb]1[/color][color=#007700],[/color][color=#0000bb]2[/color][color=#007700],[/color][color=#0000bb]3[/color][color=#007700]}, [/color][COLOR=#0000bb]_ 2 – الاعلان بدون اسناد قيم عند الاعلان كود : [color=#000000][COLOR=#0000bb]Dim arr[/color][color=#007700]([/color][color=#0000bb]10[/color][color=#007700]) As [/color][COLOR=#0000bb]Integer وحجم هذة المصفوفة هو 11 عنصر من 0 - 10 او يمكن كتابتها بالطريقة التالية كود : [color=#000000][COLOR=#0000bb]Dim arr[/color][color=#007700]([/color][color=#0000bb]0 To 10[/color][color=#007700]) As [/color][COLOR=#0000bb]Integer 3- الاعلان عن مصفوفة وتحديد حجمها لاحقا كود : [color=#000000][COLOR=#0000bb]Dim arr[/color][color=#007700]() As [/color][COLOR=#0000bb]Integer ولتحديد حجمها نستخدم الكلمة المحجوزة ReDim كود : [color=#000000][COLOR=#0000bb]ReDim arr[/color][color=#007700]([/color][color=#0000bb]10[/color][COLOR=#007700]) وعند اعادة تحجيم المصفوفة فانها تفقد بياناتها السابقة ولكي نقوم بالحفاظ عليها نستخدم الكلمة Preserve كود : [color=#000000][COLOR=#0000bb]ReDim Preserve arr[/color][color=#007700]([/color][color=#0000bb]10[/color][COLOR=#007700]) 4- الاعلان عن مصفوفات من نوع كلاس كود : [color=#000000][COLOR=#0000bb]Dim employees[/color][color=#007700]([/color][color=#0000bb]0 To 10[/color][color=#007700]) As [/color][COLOR=#0000bb]Employee الاعلان المتتعد للمتغيرات : الاعلان المتعدد يعني امكانية الاعلان عن اكثر من متغير في نفس الجملة البرمجية فمثلا بدل ان نكتب كود : [color=#000000][COLOR=#0000bb]Dim x [/color][color=#007700]As [/color][COLOR=#0000bb]Integer نكتبها بهذا الشكل كود : [color=#000000][COLOR=#0000bb]Dim x [/color][color=#007700], [/color][color=#0000bb]y [/color][color=#007700]As [/color][COLOR=#0000bb]Integer وبدل ان نكتب كود : [color=#000000][COLOR=#0000bb]Dim x [/color][color=#007700]As [/color][COLOR=#0000bb]Integer نكتبها بهذا الشكل كود : [color=#000000][COLOR=#0000bb]Dim x [/color][color=#007700]As [/color][color=#0000bb]Integer[/color][color=#007700], [/color][color=#0000bb]s [/color][color=#007700]As [/color][COLOR=#0000bb]String كود : [color=#000000][COLOR=#0000bb]Dim x [/color][color=#007700], [/color][color=#0000bb]y [/color][color=#007700]As [/color][color=#0000bb]Integer [/color][color=#007700], [/color][color=#0000bb]s [/color][color=#007700]As [/color][COLOR=#0000bb]String كما يمكن اسناد قيم اولية كود : [color=#000000][COLOR=#0000bb]Dim x [/color][color=#007700]As [/color][color=#0000bb]Integer [/color][color=#007700]=[/color][color=#0000bb]10[/color][color=#007700], [/color][color=#0000bb]s [/color][color=#007700]As [/color][color=#0000bb]String[/color][color=#007700]=[/color][color=#dd0000]"MGR"[/color][color=#007700],[/color][color=#0000bb]z [/color][color=#007700]As [/color][color=#0000bb]Float [/color][color=#007700]=[/color][COLOR=#0000bb]10.5 المدى Scope مدى المتغير يخبر اجزاء الكود الاخرى عن مدى امكانية الوصول الية مثلا لو انك قمت بالاعلان عن متغير داخل اجراء فرعي فان الكود الذي داخل هذا الاجراء فقط يستطيع الوصول الية Block Scope البلوك هو سلسلة من الجمل البرمجية التى تكون محصورة داخل اطار محدد له بداية ونهاية مثل جمل التحكم البرمجي For ,If , Select Case فالمتغير الذي نقوم بالاعلان عنة داخل For .. Loop فان مداة يكون ضمن ال For فقط امثلة للاعلان عن متغيرات داخل بلوك 1- For..Loop كود : [color=#000000][COLOR=#0000bb][/color][color=#007700]For [/color][color=#0000bb]i [/color][color=#007700]As [/color][color=#0000bb]Integer [/color][color=#007700]= [/color][COLOR=#0000bb]1 To 5 2- Select Case كل Case يمتلك مداة الخاص داخل Select Case 3- Try.. Catch كل استثناء يعتبر بلوك خاص كود : [color=#000000][COLOR=#0000bb][/color][COLOR=#007700]Try 4 – If ..Then ..Else كود : [color=#000000][COLOR=#0000bb][/color][color=#007700]If [/color][COLOR=#0000bb]True Then 5 – While ..Loop المتغير ضمنها يكون متغير محلي 6 – Using كود : [COLOR=#000000][COLOR=#0000bb]Using _ |