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

رمــالـ الــخــلــيـــج

� ∫Ξ∫ ᆻᆻ|[اهلا بيكم في اكـــــ <رمــالـ الــخــلــيـــج> ــبـر تجمع خليجي عربي]|ᆻᆻ ∫Ξ∫
 
دخولالرئيسيةالبوابةأحدث الصورالتسجيل

 

 سلسلة دروس OOP

اذهب الى الأسفل 
3 مشترك
كاتب الموضوعرسالة
Admin
Admin



المساهمات : 47
تاريخ التسجيل : 29/04/2008

سلسلة دروس OOP Empty
مُساهمةموضوع: سلسلة دروس OOP   سلسلة دروس OOP Emptyالأربعاء مايو 07, 2008 1:11 am

السلام عليكم ورحمة الله وبركاته :



قبل قراءة الدرس يجب عليك قراءة درس Classes in VB.NET



الجزء الأول :

**********

لو انك تقوم بعمل برنامج متعلق بالرياضيات وتحتاج الي العمليات الحسابيه كثيرا فهل كل مره ستكتب هذا الكود لجمع رقمين :



[align=left:1c6a2b6e44]CODE[/align:1c6a2b6e44]

[code:1:1c6a2b6e44]Dim x, y As Integer

MsgBox(Val(x) + Val(y))[/code:1:1c6a2b6e44]

هذا في حالة بسيطه جدا وهي جمع رقمين أما لو طلب منك عمليات حسابيه كبيره وطويله ماذا تفعل !!!



أليس من الأفضل عمل دالة تقوم بعمليه الجمع واستخدامها سهل كالتالي :

[align=left:1c6a2b6e44]CODE[/align:1c6a2b6e44]

[code:1:1c6a2b6e44]myobject.Sum(2, 3)[/code:1:1c6a2b6e44]

وظيفة الدرس هو أن نتعلم كيفية عمل دالة تقوم بمثل العمل السابق ,,,



ا- أنشئ Class لكي نعمل فيها بحريه , ,ولكي تنشئ دالة اكتب في داخل الـ Class التالي :



نعلن عن الدالة كالتالي :



[align=left:1c6a2b6e44]CODE[/align:1c6a2b6e44]

[code:1:1c6a2b6e44]Function Sum[/code:1:1c6a2b6e44]



وبالضغط علي زر انتر يتم استكمال باقي الكود :



[align=left:1c6a2b6e44]CODE[/align:1c6a2b6e44]

[code:1:1c6a2b6e44]Function Sum()



End Function[/code:1:1c6a2b6e44]





هذا هو هيكل الدالة والذي سنكتب بداخله كود جمع رقمين مثلا ,



الدالة التي تقوم بجمع رقمين التي عرضتها في البدايه تأخذ الرقمين كـ Parameters , اذن كيف يمكن تمريرها الي الداله ؟؟؟



يمكن تمريرها كالتالي :



داخل القوسين بجانب اسم الدالة قم بكتابة اسم المتغير وكذلك حدد نوعه - كأنك تعلن عن متغير عادي أثناء كتابتك للكود :



[align=left:1c6a2b6e44]CODE[/align:1c6a2b6e44]

[code:1:1c6a2b6e44]Function Sum(x As Integer,y As Integer)[/code:1:1c6a2b6e44]



ثم أضغط انتر لتجد أنه تمت كتابة ByVal بجانب كل متغير , هكذا تستطيع دالتك أن تأخذ متغيرات ,



لكن كيف نعود بقيمة حاصل جمع الرقمين ؟



يمكن هذا مباشره عن طريق استخدام عبارة Return وهي من مميزات الدوال , وهذه العباره تتيح أن تعود الدالة بقيمة ما لاستعمالها مره أخري ...,



في داخل كود الدالة اكتب :



[align=left:1c6a2b6e44]CODE[/align:1c6a2b6e44]

[code:1:1c6a2b6e44]Return (x + y)[/code:1:1c6a2b6e44]



يمكنك استعمال عبارة Return بطريقه أخري كالتالي :



نعلن عن متغير يحمل قيمة عملية الجمع , ثم نضع فيه حاصل جمع X+Y هكذا :



[align=left:1c6a2b6e44]CODE[/align:1c6a2b6e44]

[code:1:1c6a2b6e44]Dim z As Integer

z = (x + y)[/code:1:1c6a2b6e44]

ثم نسند المتغير z الي عبارة Return ويكون الكود النهائي للداله هكذا ويفضل توضيح نوع القيمه التي ستعود بها الداله ويكون بجوار المتغيرات من خارج الأقواس :



[align=left:1c6a2b6e44]CODE[/align:1c6a2b6e44]

[code:1:1c6a2b6e44]Function Sum(ByVal x As Integer, ByVal y As Integer) As Integer

Dim z As Integer

z = (x + y)

Return z

End Function[/code:1:1c6a2b6e44]

جرب أن تستعمل الدالة التي صممناها كما تعلمت من درس الـ Classes in VB.NET :



في حدث Button_Click أنشئ Object من الكلاس ثم استخدم الدالة Sum , واعرض الناتج في رساله :



[align=left:1c6a2b6e44]CODE[/align:1c6a2b6e44]

[code:1:1c6a2b6e44]Dim myobject As New OOP2Class

MsgBox(myobject.Sum(2, 3))[/code:1:1c6a2b6e44]



الجزء الثاني :

**********

تطبيق : كيف يمكن استخدام تصميم الدوال في تغليف دوال الـ API ???

وهو ما يسمي API Wrapping ,,,

**********************************************************

أولا لكي تغلف دالة من دوال الـ API يجب معرفة الدالة وكذلك معاملاتها ,



مثال : توجد دالتي API تستخدمان لاخفاء واظهار الـ TaskBar :



نعلن عنهم في أول الكلاس كالتالي :



[align=left:1c6a2b6e44]CODE[/align:1c6a2b6e44]

[code:1:1c6a2b6e44] Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Int32

Private Declare Function SetWindowPos Lib "user32.dll" (ByVal hwnd As Int32, ByVal hWndInsertAfter As Int32, ByVal x As Int32, ByVal y As Int32, ByVal cx As Int32, ByVal cy As Int32, ByVal wFlags As Int32) As Int32[/code:1:1c6a2b6e44]





ومعاملات هذه الدوال هي .. ونعلن عنها أسفل الدوال مباشره كالتالي , كما نعلن عن متغير يستقبل عنوان الـ TaskBar من النوع Integer :



[align=left:1c6a2b6e44]CODE[/align:1c6a2b6e44][code:1:1c6a2b6e44]

Const swp_hidewindow = &H80

Const swp_showwindow = &H40

Dim hwnd As Integer[/code:1:1c6a2b6e44]



ثم ننشئ دالة لاخفاء الـ TaskBar كالتالي :



[align=left:1c6a2b6e44]CODE[/align:1c6a2b6e44]

[code:1:1c6a2b6e44]Public Function Show_TaskBar()

hwnd = FindWindow("shell_traywnd", "")

SetWindowPos(hwnd, 0, 0, 0, 0, 0, swp_showwindow)

End Function[/code:1:1c6a2b6e44]

ثم ننشئ دالة لالاظهار الـ TaskBar كالتالي :



[align=left:1c6a2b6e44]CODE[/align:1c6a2b6e44]

[code:1:1c6a2b6e44] Public Function Hide_TaskBar()

hwnd = FindWindow("shell_traywnd", "")

SetWindowPos(hwnd, 0, 0, 0, 0, 0, swp_hidewindow)

End Function[/code:1:1c6a2b6e44]



ويمكنك استخدام عبارة الـ Return للتأكد من أنه تم الاخفاء والاظهار .....أتركها لكم كتمرين ومن لم يعرف فليسأل ....وأنا في الخدمة ....,,,



أذهب الي الفورم وأنشئ Object من الكلاس واستخدم هاتين الدالتين وانظر النتيجه ..... رائعه ,,,



الجزء الثالث :

***********

ما هو Overloading ؟؟؟

************************



لكي تفهم معني الـ Overloading أشرح لكم المعني النظري الذي فهمته من كتاب ,,,



الكثير منا لديه تليفون محمول (موبايل) - نفسي أشتري واحد - ألم تلاحظ أن بعض أزرار الوظائف تؤدي أكثر من وظيفة !!!



مره تكون وظيفة الزر هي الاتصال ومره قطع الاتصال ومره حذف رساله ومره ............... ,,,,



فكيف يكون نفس الزر ويؤدي أكثر من وظيفة , كذلك سنقوم بعمل أكثر من دالة بنفس الاسم ولكن وظائف مختلفه بشرطين علي الأقل :



1- أن يختلف عدد معاملات كل دالة عن الأخري ,



2- أن تختلف معاملات الدوال في نوعها String,integer و هكذا .......,,,



مثال :



تعالوا نصمم دالتين بنفس الاسم Sum ولكن الأولي تأخذ متغيرين فقط (كما سبق) والثانيه تأخذ 3 متغيرات كالتالي :



التي تأخذ متغيرين صممناها قبل ذلك تعالوا نري الشكل النهائي للدالة التي ستأخذ ثلاثة متغيرات :



[align=left:1c6a2b6e44]CODE[/align:1c6a2b6e44]

[code:1:1c6a2b6e44] Function Sum(ByVal x As Integer, ByVal y As Integer, ByVal z As Integer) As Integer

Dim r As Integer

r = (x + y + z)

Return r

End Function[/code:1:1c6a2b6e44]





وكما رايتم أضفت متغير جديد لتتماشي مع التعديل ,



حاول استخدام الدالة في الفورم :



أنشئ Object من الكلاس واستخدم الدالة ستري التالي :







هذا هو الـ Overloading , أليس بسيطا وسهلا , Shocked
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://esa4.ahlamontada.com
الرحالة&الصغير




المساهمات : 94
تاريخ التسجيل : 05/05/2008

سلسلة دروس OOP Empty
مُساهمةموضوع: رد: سلسلة دروس OOP   سلسلة دروس OOP Emptyالأربعاء مايو 07, 2008 4:00 am

مشكور اخوي ادمن مقصرت اخوي
الرجوع الى أعلى الصفحة اذهب الى الأسفل
teef-3abr

teef-3abr


المساهمات : 124
تاريخ التسجيل : 03/05/2008

سلسلة دروس OOP Empty
مُساهمةموضوع: رد: سلسلة دروس OOP   سلسلة دروس OOP Emptyالأربعاء مايو 07, 2008 6:05 pm

يعطيك العافية يارب

[img]سلسلة دروس OOP Ab965c9c25[/img]
الرجوع الى أعلى الصفحة اذهب الى الأسفل
 
سلسلة دروس OOP
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
رمــالـ الــخــلــيـــج :: رمــالـ الــخــلــيـــج منتديات الانترنت والكمبيوتر :: قسم محترفي visual basic-
انتقل الى: