الشبكة العربية لمطوري الألعاب

مبتدئ  kenan aboud مشاركة 1

1-المقدمة

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

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

برمجة الكائنات او OOP تعبر مثل انك تصنع اده ممكن تستخددمها و تبعها كمان زى اه مثلا زى ادوات النجاره لو النجار صنع شاكوش او مفك او منشار ده تعتبر ادوات تسهل عليه العمل مع الخشب كذلك المبرمج يصنع كائن يستخدمه فى برمجة مختلفه مع اختلاف وظائف هذا الكائن بطبيعة وظيفته .

مبتدئ  kenan aboud مشاركة 2

2- كيفية الاعلان عن الــــــ (Class)



يمكننا ان نقوم بتحويل هذا التركيب الفئة Class

يمكننا ان نقوم بتحويل هذا التركيب الى فئة ( Class ) ويكون الاعلان باستخدام كلمة Class بدلا من Structure كما نرى فى الصورة

وتتشابه الفئات مع التركيبات فى انه لا يمكن الاعلان عنها داخل اى اجراء فرعى بل كما نرى فى الصورة يتم الاعلان عنها فى المنطقة العامة للوحدة البرمجية



مبتدئ  kenan aboud مشاركة 3

الصورة المرفقة


مبتدئ  kenan aboud مشاركة 4

الصورة المرفقة


مبتدئ  kenan aboud مشاركة 5

ملاحظة بسيطة :
انت هنا انشأت Module و ليس Class لأن ال Class وضعته داخل ال Module لكن الأمر الطبيعيي هو انه يجب ان تنشأ Class كوحدة و اذا اردت ان تجمع عدة كلاسات ضمن وحدة واحدة فيمكنك استعمال NameSpace فقط هذه امور يجب مراعاتها لكي تستفيد من كل مزايا الدوت نت
و هذا مثال بسيط :

Namespace ss
    Class s
        Dim Name As String
        Dim age As Integer
        Sub New()
            Name = "ayoub"
            age = 23
        End Sub
        Public Property The_Name() As String
            Get
                Return Name
            End Get
            Set(ByVal value As String)
                Name = value
            End Set
        End Property
    End Class
End Namespace

يمكنك الآن مناداة الكلاس بطريقة متطورة قليلا او بمعنى بطريقة الدوت نت و هي كالتالي :

Imports WindowsApplication1.ss
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim s As New s
        MsgBox(s.The_Name)
    End Sub
End Class

مبتدئ  kenan aboud مشاركة 6

3- قابلية الرؤية للـــ Class


عمدما نقوم بتحديد نوا الـــ Class الذى تم الاعلان عنه فانه يعتبر افتراضيا Friend مثل الذى قمنا بانشائه فى الصور السابقة اى يمكن رؤيته من داخل المشروع الحالى فقط ولا يمكن رؤيته من اى مشروع اخر نهائيا فمثلا اذا تم ادراج Class من هذا النوع Friend باحد المكتبات فانه يصحب جدا الوصول اليه من خلال هذه المكتبة .

و يمكننا الاعلان عن الـــ Class فى صورة Public اى تتم رؤيته هذه الفئة داخل المشروع الحالى ومن خاجه ايضا اى اذا تم ادراجه فى مكتبه مثلا فانه يمكن الوصول الى هذا الـــ Class من خلال هذه المكتبة .

ويمكن الاعلان عن الــــ Class فى صورة Private اى لاتتم رؤيته إلى داخل الـــ Class الذى تم الاعلان عنه بداخله او بداخل الوحدة البرمجية التى تم الاعلان عنه بداخله .

اى لا يمكن استخدام الكلمة Private عند الاعلان عن Class الا اذا كان هذا الـــ Class داخل Class اخر او داخل وحدة برمجية اخرى لنرى ذللك من خلال الصورة التالية :-

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

وهكذا استطعنا الوصول الى الــــ Class من نوع Private داخل الوحدة البرمجية التى انشاة بداخلها .


مبتدئ  kenan aboud مشاركة 7

الصورة المرفقة


مبتدئ  kenan aboud مشاركة 8

كيفية استخدام الــــ Class الذى تم الاعلان عنه


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

نجد ان المتغير الذى تم الاعلان عنه تحول الى كائن خاص بذاته يشير الى نسخة من Class الذى تم الاعلان عنه وهو الــــ Class Mostafa_Alpha

اى ان هذا المتغير يشير الى الكائن فى الذاكرة وليس احتضان نسخة كاملة من هذا الكائن ونرى ذلك كما بالصورة التالية قبل الذهاب الى الصورة لاحظ معى المتغيرات التى تم الاعلان عنها داخل الفئة Class Mostafa_Alpha نجد انه تم الاعلان عن المتغير Name على انه عام بينما المتغير Age على انه خاص لنرى اذا الصورة :


مبتدئ  kenan aboud مشاركة 9

الصورة المرفقة


مبتدئ  kenan aboud مشاركة 10

الاعلان عن الـــ Class باستخدام الكلمة New


للوصول الى المتغيرات الموجودة داخل الفئة عند تخذ نسخة منها علينا الاعلان عنها فى صورة عامة Public وليس فى صورة خاصة Dim ونجد انه يمكننا تمرير اية قيم الى المتغيرات العامة داخل الفئة Class كما راينا فى الصورة السابقة ايضا لاحظ فى الصورة السابقة تم الاعلان باستخدام الكلمة New كما بالصورة

ما الذى يعنيه هذا الاعلان ؟

تم اخذ نسخة كاملة من الفئة ووضعها فى الذاكرة وذا الردنا ان نرى الموضوع بصورته الطبيعية داخل الذاكرة حيث تنقسم الذاكرة الى قسمين هما
Heap - Stack

والصورة التاليه توضح الذاكرة المحجوز فيها الكائن السابق Mostafa_Alpha

ونجد انه تم انشاء المتغير فى الذاكرة ومساحته لا تتعدى 4 بايت ويشير الى الـــــ Class الذى تم اخذ نسخة منه وهو Class Mostafa_Alpha

وبالتالى يوجد لدينا امران هما :-

Object و الذى يتم التعامل مه لارسال واستقبال القيم التى يتم الاعلان عنها و هوا عبارة عن المتغير الذى تم الاعلان عنه .

Instance وهى النسخة من الفئة Class التى نريد ارسال القيم اليها .

بينما اذا تم الاعلان عن المتغير بالصورة التالية :-

فان الذى يحدث فى الذاكرة هو مايلى :-

تم انشاء Object فقط ولم يتم عمل Instance وبالتالى يجب علينا التركيز فى هذه الجزئية جيدا متى نقوم بانشاء Instance للفئة و متى لا نقوم بانشاء هذه النسخة ......... بالطبع سنقوم بانشاء النسخة اذا اردنا تمرير بعض القيم الى المعاملات الخاصة بالفئة .