02-10-12, 06:19 PM
كاتب الموضوع : المخلب الجارح
امكانية الوصول :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
[/COLOR][color=#007700]Public [/color][color=#0000bb]LastName [/color][color=#007700]As [/color][COLOR=#0000bb]String
[/COLOR][color=#007700]Public [/color][color=#0000bb]EmployeeId [/color][color=#007700]As [/color][COLOR=#0000bb]String
End [/COLOR][COLOR=#007700]Class
Public Class [/COLOR][COLOR=#0000bb]Employee
Inherits Person
[/COLOR][color=#007700]Public [/color][color=#0000bb]Shadows EmployeeId [/color][color=#007700]As [/color][COLOR=#0000bb]Long
End [/COLOR][COLOR=#007700]Class
Public Class [/COLOR][COLOR=#0000bb]Manager
Inherits Employee
[/COLOR][color=#007700]Public [/color][color=#0000bb]Shadows LastName [/color][color=#007700]As [/color][COLOR=#0000bb]String
End [/COLOR][COLOR=#007700]Class
Private [/COLOR][color=#0000bb]Sub TestShadows[/color][COLOR=#007700]()
[/COLOR][color=#0000bb]Dim mgr [/color][color=#007700]As New [/color][COLOR=#0000bb]Manager
mgr[/COLOR][color=#007700].[/color][color=#0000bb]LastName [/color][color=#007700]= [/color][COLOR=#0000bb]“Manager Last Name”
mgr[/COLOR][color=#007700].[/color][color=#0000bb]EmployeeId [/color][color=#007700]= [/color][COLOR=#0000bb]1
Dim emp [/COLOR][color=#007700]As [/color][color=#0000bb]Employee [/color][color=#007700]= [/color][color=#0000bb]CType[/color][color=#007700]([/color][color=#0000bb]mgr[/color][color=#007700], [/color][color=#0000bb]Employee[/color][COLOR=#007700])
[/COLOR][color=#0000bb]emp[/color][color=#007700].[/color][color=#0000bb]LastName [/color][color=#007700]= [/color][COLOR=#0000bb]“Employee Last Name”
emp[/COLOR][color=#007700].[/color][color=#0000bb]EmployeeId [/color][color=#007700]= [/color][COLOR=#0000bb]2
Dim per [/COLOR][color=#007700]As [/color][color=#0000bb]Person[/color][color=#007700]= [/color][color=#0000bb]CType[/color][color=#007700]([/color][color=#0000bb]mgr[/color][color=#007700], [/color][color=#0000bb]Person[/color][COLOR=#007700])
[/COLOR][color=#0000bb]per[/color][color=#007700].[/color][color=#0000bb]LastName [/color][color=#007700]= [/color][COLOR=#0000bb]“Person Last Name”
per[/COLOR][color=#007700].[/color][color=#0000bb]EmployeeId [/color][color=#007700]= [/color][COLOR=#0000bb]“A”
MessageBox[/COLOR][color=#007700]([/color][color=#0000bb]mgr[/color][color=#007700].[/color][color=#0000bb]EmployeeId [/color][color=#007700]& [/color][color=#0000bb]“[/color][color=#007700]: [/color][color=#0000bb]“ [/color][color=#007700]& [/color][color=#0000bb]mgr[/color][color=#007700].[/color][color=#0000bb]LastName[/color][COLOR=#007700])
[/COLOR][color=#0000bb]MessageBox [/color][color=#007700]([/color][color=#0000bb]emp[/color][color=#007700].[/color][color=#0000bb]EmployeeId [/color][color=#007700]& [/color][color=#0000bb]“[/color][color=#007700]: [/color][color=#0000bb]“ [/color][color=#007700]& [/color][color=#0000bb]emp[/color][color=#007700].[/color][color=#0000bb]LastName[/color][COLOR=#007700])
[/COLOR][color=#0000bb]MessageBox [/color][color=#007700]([/color][color=#0000bb]per[/color][color=#007700].[/color][color=#0000bb]EmployeeId [/color][color=#007700]& [/color][color=#0000bb]“[/color][color=#007700]: [/color][color=#0000bb]“ [/color][color=#007700]& [/color][color=#0000bb]per[/color][color=#007700].[/color][color=#0000bb]LastName[/color][COLOR=#007700])
[/COLOR][COLOR=#0000bb]End Sub
[/COLOR][/COLOR]
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][/COLOR]
كما اننا نستطيع ان نعطي قيم لمتغيرات من هذا النوع عن عمل
نسخة من كلاس وذلك داخل دالة البناء مثال
كود :
[color=#000000][COLOR=#0000bb][/color][color=#007700]Public Class [/color][COLOR=#0000bb]EmployeeCollection
[/COLOR][color=#007700]Public [/color][color=#0000bb]ReadOnly MaxEmployees [/color][color=#007700]As [/color][COLOR=#0000bb]Integer
[/COLOR][color=#007700]Public [/color][color=#0000bb]Sub [/color][COLOR=#007700]New()
[/COLOR][color=#0000bb]MaxEmployees [/color][color=#007700]= [/color][COLOR=#0000bb]100
End Sub
[/COLOR][color=#007700]Public [/color][color=#0000bb]Sub [/color][color=#007700]New([/color][color=#0000bb]ByVal max_employees [/color][color=#007700]As [/color][color=#0000bb]Integer[/color][COLOR=#007700])
[/COLOR][color=#0000bb]MaxEmployees [/color][color=#007700]= [/color][COLOR=#0000bb]max_employees
End Sub
[/COLOR][COLOR=#007700]...
[/COLOR][color=#0000bb]End [/color][COLOR=#007700]Class
[/COLOR][color=#0000bb][/color][/COLOR]
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
[/COLOR][/COLOR]
وانتظر ماذا سيحدث
والمتغيرات المعلنة بواسطة كلمة Dim تعتبر في الحقيقة Private
انظر الى هاتين الجملتين انهما متساويتين
كود :
[color=#000000][COLOR=#0000bb]Dim num_people [/color][color=#007700]As [/color][COLOR=#0000bb]Integer
[/COLOR][color=#007700]Private [/color][color=#0000bb]num_people [/color][color=#007700]As [/color][COLOR=#0000bb]Integer
[/COLOR][/COLOR]
WithEvents
هذة الكلمة المحجوزة تقوم بالاعلان عن تمتلك احداث يمكن التعامل
معها تماما كمثل الاحداث الاخرى باللغة
كود :
[color=#000000][COLOR=#0000bb][/color][color=#007700]Private [/color][color=#0000bb]WithEvents Face [/color][color=#007700]As [/color][COLOR=#0000bb]PictureBox
[/COLOR][/COLOR]
وبعد الاعلان عن متغير بواسطة هذة الكلمة يقوم الفيجوال مباشرة
باضافة هذا المتغير الى القائمة المنسدلة Class Name التى توضح
ماهي مكونات البرنامج الرسومية وغيرها التي تمتلك احداث وايضا
يقوم باضافة احداث لذلك المتغير بالقائمة المنسدلة Method Name
ولقد تكلمنا عن هذا المتغير بدرس الادوات
---------
New
تقوم هذة الكلة المحجوزة باخبار الفيجوال بيسك بانشاء نسخة جديدة من Object الذي تريد انشاء نسخة منة
وبدونها فان المتغير الذي قمت بالاعلان عنة ليس لة مرجع وتكون قيمتة الابتدائية تساوي Nothing
مثال ليكن لدينا كلاس اسمة Emp ونريد انشاء نسختين منة على هذا الشكل
كود :
[color=#000000][COLOR=#0000bb] Dim E1 [/color][color=#007700]As [/color][COLOR=#0000bb]Emp
E1[/COLOR][color=#007700]=New [/color][COLOR=#0000bb]Emp
[/COLOR][/COLOR]
كود :
[color=#000000][COLOR=#0000bb] Dim E2 [/color][color=#007700]As New [/color][COLOR=#0000bb]Emp
[/COLOR][/COLOR]
كلتا الجملتين صحيحة ولكن الجملة الثانية افضل لننا قمنا بجمع الجملتين السابقتين في جملة واحدة
الاعلان عن 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][/COLOR]
كود :
[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]_
[/COLOR][color=#007700]{[/color][color=#0000bb]4[/color][color=#007700],[/color][color=#0000bb]5[/color][color=#007700],[/color][color=#0000bb]6[/color][color=#007700]}} [/color][COLOR=#0000bb]ذات بعدين
[/COLOR][/COLOR]
2 – الاعلان بدون اسناد قيم عند الاعلان
كود :
[color=#000000][COLOR=#0000bb]Dim arr[/color][color=#007700]([/color][color=#0000bb]10[/color][color=#007700]) As [/color][COLOR=#0000bb]Integer
[/COLOR][/COLOR]
وحجم هذة المصفوفة هو 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
[/COLOR][/COLOR]
3- الاعلان عن مصفوفة وتحديد حجمها لاحقا
كود :
[color=#000000][COLOR=#0000bb]Dim arr[/color][color=#007700]() As [/color][COLOR=#0000bb]Integer
[/COLOR][/COLOR]
ولتحديد حجمها نستخدم الكلمة المحجوزة ReDim
كود :
[color=#000000][COLOR=#0000bb]ReDim arr[/color][color=#007700]([/color][color=#0000bb]10[/color][COLOR=#007700])
[/COLOR][color=#0000bb][/color][/COLOR]
وعند اعادة تحجيم المصفوفة فانها تفقد بياناتها السابقة ولكي نقوم بالحفاظ عليها نستخدم الكلمة Preserve
كود :
[color=#000000][COLOR=#0000bb]ReDim Preserve arr[/color][color=#007700]([/color][color=#0000bb]10[/color][COLOR=#007700])
[/COLOR][color=#0000bb][/color][/COLOR]
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][color=#007700]For [/color][color=#0000bb]I [/color][color=#007700]As [/color][color=#0000bb]Integer[/color][color=#007700]=[/color][COLOR=#0000bb]0 To 10
Employees[/COLOR][color=#007700]([/color][color=#0000bb]i[/color][color=#007700])=New [/color][COLOR=#0000bb]Employee
Next
[/COLOR][/COLOR]
الاعلان المتتعد للمتغيرات :
الاعلان المتعدد يعني امكانية الاعلان عن اكثر من متغير في نفس الجملة البرمجية
فمثلا بدل ان نكتب
كود :
[color=#000000][COLOR=#0000bb]Dim x [/color][color=#007700]As [/color][COLOR=#0000bb]Integer
Dim y [/COLOR][color=#007700]As [/color][COLOR=#0000bb]Integer
[/COLOR][/COLOR]
نكتبها بهذا الشكل
كود :
[color=#000000][COLOR=#0000bb]Dim x [/color][color=#007700], [/color][color=#0000bb]y [/color][color=#007700]As [/color][COLOR=#0000bb]Integer
[/COLOR][/COLOR]
وبدل ان نكتب
كود :
[color=#000000][COLOR=#0000bb]Dim x [/color][color=#007700]As [/color][COLOR=#0000bb]Integer
Dim s [/COLOR][color=#007700]As [/color][COLOR=#0000bb]String
[/COLOR][/COLOR]
نكتبها بهذا الشكل
كود :
[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][/COLOR]
كود :
[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][/COLOR]
كما يمكن اسناد قيم اولية
كود :
[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
[/COLOR][/COLOR]
المدى 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
Dim j [/COLOR][color=#007700]As [/color][color=#0000bb]Integer [/color][color=#007700]= [/color][COLOR=#0000bb]3
[/COLOR][color=#007700]If [/color][color=#0000bb]i [/color][color=#007700]= [/color][COLOR=#0000bb]j Then
Dim M [/COLOR][color=#007700]As [/color][color=#0000bb]Integer [/color][color=#007700]= [/color][color=#0000bb]i [/color][color=#007700]+ [/color][COLOR=#0000bb]j
Debug[/COLOR][color=#007700].[/color][color=#0000bb]WriteLine[/color][color=#007700]([/color][color=#0000bb]“M[/color][color=#007700]: [/color][color=#0000bb]“ [/color][color=#007700]& [/color][color=#0000bb]M[/color][COLOR=#007700])
[/COLOR][color=#0000bb]End [/color][COLOR=#007700]If
[/COLOR][COLOR=#0000bb]Next i
[/COLOR][/COLOR]
2- Select Case
كل Case يمتلك مداة الخاص داخل Select Case
3- Try.. Catch
كل استثناء يعتبر بلوك خاص
كود :
[color=#000000][COLOR=#0000bb][/color][COLOR=#007700]Try
[/COLOR][color=#0000bb]Dim i [/color][color=#007700]As [/color][color=#0000bb]Integer [/color][color=#007700]= [/color][color=#0000bb]CInt[/color][color=#007700]([/color][color=#0000bb]“bad value”[/color][COLOR=#007700])
Catch [/COLOR][color=#0000bb]ex [/color][color=#007700]As [/color][COLOR=#0000bb]InvalidCastException
Dim txt [/COLOR][color=#007700]As [/color][color=#0000bb]String [/color][color=#007700]= [/color][COLOR=#0000bb]“InvalidCastException”
MsgBox[/COLOR][color=#007700]([/color][color=#0000bb]txt[/color][COLOR=#007700])
Catch [/COLOR][color=#0000bb]ex [/color][color=#007700]As [/color][COLOR=#0000bb]Exception
Dim txt [/COLOR][color=#007700]As [/color][color=#0000bb]String [/color][color=#007700]= [/color][COLOR=#0000bb]“Exception”
MsgBox[/COLOR][color=#007700]([/color][color=#0000bb]txt[/color][COLOR=#007700])
[/COLOR][color=#0000bb]End [/color][COLOR=#007700]Try
[/COLOR][color=#0000bb][/color][/COLOR]
4 – If ..Then ..Else
كود :
[color=#000000][COLOR=#0000bb][/color][color=#007700]If [/color][COLOR=#0000bb]True Then
Dim txt [/COLOR][color=#007700]As [/color][color=#0000bb]String [/color][color=#007700]= [/color][COLOR=#dd0000]"M"
[/COLOR][color=#0000bb]MsgBox[/color][color=#007700]([/color][color=#0000bb]txt[/color][COLOR=#007700])
Else
[/COLOR][color=#0000bb]Dim txt [/color][color=#007700]As [/color][color=#0000bb]String [/color][color=#007700]= [/color][COLOR=#dd0000]"E"
[/COLOR][color=#0000bb]MsgBox[/color][color=#007700]([/color][color=#0000bb]txt[/color][COLOR=#007700])
[/COLOR][color=#0000bb][/color][/COLOR]
5 – While ..Loop
المتغير ضمنها يكون متغير محلي
6 – Using
كود :
[COLOR=#000000][COLOR=#0000bb]Using _
emp1 [/COLOR][color=#007700]As New [/color][COLOR=#0000bb]Emp
Dim i [/COLOR][color=#007700]As [/color][COLOR=#0000bb]Integer
End Using
[/COLOR][/COLOR]