.
- صور سيارات
- صور تلوين
- صور عالية الجودة
- صور
- رياض اطفال
- صور اخترناها لك
- تلوين حيوانات
- عروض اسعار
- صور موبيلات
- صور كرتون صور انمى
- صور مميزة
- صور طبيعة
- صور غريبة
- صور حيوانات وطيور
- صور منوعة
- صور اسلامية
- صور للماسنجر
- صور اجهزة
- مقالات
- صور خلفيات
- صور شخصيات شهيرة
- الحروف
- صور مضحكة
- صور متحركة
- تلوين طيور
- صور اطفال
- صور علمية
- صور لاب توب
- فيديو
- صور حب
- تعليم الرسم
- صور ثلاثية أبعاد
- صور نجوم كرة القدم الاوروبية
- صور نجوم كرة القدم العربية
- تلوين اعلام الدول
- صور رياضة
- الفصول
- صور الديكور
- صور الفضاء الخارجى
- صور تصميمات
- صور تلوين كرتون
- صور ملابس
- العاب
- صور غرف نوم اطفال
- صور فنانين
- صور مرسومة
- صور ملابس اطفال
- صور موتوسيكلات
- قصص اطفال
- العاب تلوين
- اناشيد
- تلوين حشرات
- صور كاريكاتير
- صور كمبيوتر وانترنت
- افلام انمي وكارتون
- العاب الأطفال
- خلفيات موبيل
- صور أدوات
- صور انسان
- صور كاميرات
- صور معالم سياحية
- صور نباتات
- اناشيد للاطفال
- تلوين فواكه
- تلوين نباتات
- شروحات بالصور
- صور العاب
- صور حروب وأسلحة
- صور علوم وتكنولوجيا
الفرق بين Class و Object
مقدمة:
كتبت هذا الموضوع لأن أساس البرمجة في الدوت نت هي الـكائنات وفهم كيفية عملها يساعد على بناء تطبيقات صحيحة و سريعة لا تستهلك موارد النظام و تملأ ذاكرة الحاسب بكائنات ليس لها عمل و الذي يسمى بتسريب الذاكرة .Memory Leak
ما هو الصنف Class ؟
هو برنامج لا يعمل لوحده تستخدمه ضمن برنامجك لأنه لا يحتوي على واجهة Interface للتفاعل مع المستخدم
توجد الأصناف في مكتبات الربط الديناميكي Dynamic Link Library و هي ملفات من نوع DLL
عندما تضيف أحد هذه المكتبات كمرجع Reference لمشروعك يتم تحميل كود الصنف في الذاكرة
ويضاف مجموعة جديدة من المتغيرات و هذا ما يسمى Class Instantiation أو إعطاء قيم أولية للصنف
بعد تحميل الصنف في الذاكرة يمكنك تعريف متغير يشير إلى كائن من الصنف الجديد
و تكون قيمة المتغير هي عنوان القسم الذي يحتوي على الكائن الجديد في الذاكرة و اسمه Pointer
عندما تضيف أحد هذه المكتبات كمرجع Reference لمشروعك يتم تحميل كود الصنف في الذاكرة
ويضاف مجموعة جديدة من المتغيرات و هذا ما يسمى Class Instantiation أو إعطاء قيم أولية للصنف
بعد تحميل الصنف في الذاكرة يمكنك تعريف متغير يشير إلى كائن من الصنف الجديد
و تكون قيمة المتغير هي عنوان القسم الذي يحتوي على الكائن الجديد في الذاكرة و اسمه Pointer
ما هو الكائن Object ؟
هو مجموعة من المتغيرات في الذاكرة تخزن قيم الخصائـص و البارامترت الضرورية لعمل الصنف
عند إنشاء كائن جديد يتم إنشاء مجموعة من المتغيرات هي نسخة مطابقة للمتغيرات المعرفة في كود الصنف
إذاً الأصناف هي قوالب نستخدمها لإنشاء كائنات جديدة من نوعها فهي تعتبر كمصنع للكائنات
يتم استدعاء جميع إجراءات الصنف من لغة التنفيذ Common Language Runtime CLR عند الحاجة لها
و تتصرف بناءاً على قيم المتغيرات للنسخة الحالية Instances من الصنف
أي أن كل كائن له خصائص مستقلة لا تؤثر في خصائص الكائنات الأخرى
إلا إذا كانت من النوع Shared فعندها ستتغير قيمة الخاصية في جميع الكائنات عند تغيرها في الصنف
عند الإعلان عن متغير من نوع الصنف بالكلمة New يتم تنفيذ الإجراء New() للصنف و هو يسمى Class’s Constructor
لكل صنف إجراء New إفتراضي لا يحتاج لبارامترات حتى إذا كان الصنف لا يحتوي على الإجراء New
يمكنك إعادة تعريف الإجراء New بتمرير بارامترات Arguments و يمكن إعادة تعريفه Overload بأكثر من شكل
تقوم البارمترات بتمرير الخصائص المهمة لعمل الصنف أو لجعله ذو معنى و فائدة
عند إنشاء كائن جديد يتم إنشاء مجموعة من المتغيرات هي نسخة مطابقة للمتغيرات المعرفة في كود الصنف
إذاً الأصناف هي قوالب نستخدمها لإنشاء كائنات جديدة من نوعها فهي تعتبر كمصنع للكائنات
يتم استدعاء جميع إجراءات الصنف من لغة التنفيذ Common Language Runtime CLR عند الحاجة لها
و تتصرف بناءاً على قيم المتغيرات للنسخة الحالية Instances من الصنف
أي أن كل كائن له خصائص مستقلة لا تؤثر في خصائص الكائنات الأخرى
إلا إذا كانت من النوع Shared فعندها ستتغير قيمة الخاصية في جميع الكائنات عند تغيرها في الصنف
عند الإعلان عن متغير من نوع الصنف بالكلمة New يتم تنفيذ الإجراء New() للصنف و هو يسمى Class’s Constructor
لكل صنف إجراء New إفتراضي لا يحتاج لبارامترات حتى إذا كان الصنف لا يحتوي على الإجراء New
يمكنك إعادة تعريف الإجراء New بتمرير بارامترات Arguments و يمكن إعادة تعريفه Overload بأكثر من شكل
تقوم البارمترات بتمرير الخصائص المهمة لعمل الصنف أو لجعله ذو معنى و فائدة
الفرق بين متغيرات القيمة Value Variablesو متغيرات المرجع Object Variables
- Object Variables المتغيرات التي تحتوي على مرجع لكائن
تستخدم الكلمة New لإنشاء كائن و عند تجاهلها سيتم تحميل الصنف بالذاكرة بدون إنشاء نسخة عنه
و لن يشير المتغير إلى كائن حقيقي أي أنه لا يحتوي على مرجع للصنف
فمثلاً الكود التالي:
Dim Member As Vb4ArabMembers
Vb4ArabMembers Member;
يعلن عن متغير من نوع Vb4ArabMembers لكنها لا تنشئ كائن
إذا حاولت الوصول لخصائص أو وظائف المتغير سينتج استثناء من نوع NullReferenceException
بمعنى أنك تستخدم متغير قبل وضع قيمة فيه
يمكن أن يحتوي عدد من المتغيرات على نفس المؤشر لكائن واحد
يعني يكون الكائن مرتبط بأكثر من متغير
إذا حاولت الوصول لخصائص أو وظائف المتغير سينتج استثناء من نوع NullReferenceException
بمعنى أنك تستخدم متغير قبل وضع قيمة فيه
يمكن أن يحتوي عدد من المتغيرات على نفس المؤشر لكائن واحد
يعني يكون الكائن مرتبط بأكثر من متغير
Dim Member1 As Vb4ArabMembers
Dim Member2 As New Vb4ArabMembers
Member1 = Member2
Vb4ArabMembers Member1;
Vb4ArabMembers Member2 = new Vb4ArabMembers;
Member1 = Member2;
يحتوي المتغيران على مرجع لنفس الكائن و يمكن ضبط خصائص متغير من الثاني
Member1.MemberId = "Vb4Arab"
أو
Member2.MemberId = "Vb4Arab"
لديك متغيران و كائن واحد في الذاكرة
بمعنى أو ضح المتغير Member1 هو اختصار للكائن الذي تم إنشاؤه عند الإعلان عن المتغير Member2
مثلما تنشئ اختصار لملف معين على سطح المكتب بدلاً من نسخه
يمكنك الوصول لخصائص الكائن من المتغير مثلما يمكنك فتح ملف من إختصاره
من المفيد أحياناً عدم استعمال الكلمة New لإنشاء كائن إلا عند الحاجة إليه
مثل الإعلان عن المتغير في القسم العام للنافذة و إنشاء الكائن في الإجراء عند الحاجة لاستخدامه
فقط الأصناف من نوع Shared (فيجوال بيسيك) أو static (سي شارب) لا تحتاج للكلمة New و إذا كنت لا تعرف نوع الصنف استخدم New و ستحصل على خطأ عند عدم الحاجة لها
مثلاً الصنف Math يستخدم مباشرة بدون الإعلان عن متغير من نوعه
بمعنى أو ضح المتغير Member1 هو اختصار للكائن الذي تم إنشاؤه عند الإعلان عن المتغير Member2
مثلما تنشئ اختصار لملف معين على سطح المكتب بدلاً من نسخه
يمكنك الوصول لخصائص الكائن من المتغير مثلما يمكنك فتح ملف من إختصاره
من المفيد أحياناً عدم استعمال الكلمة New لإنشاء كائن إلا عند الحاجة إليه
مثل الإعلان عن المتغير في القسم العام للنافذة و إنشاء الكائن في الإجراء عند الحاجة لاستخدامه
فقط الأصناف من نوع Shared (فيجوال بيسيك) أو static (سي شارب) لا تحتاج للكلمة New و إذا كنت لا تعرف نوع الصنف استخدم New و ستحصل على خطأ عند عدم الحاجة لها
مثلاً الصنف Math يستخدم مباشرة بدون الإعلان عن متغير من نوعه
Math.Sqrt(100)
- طريقة حذف الكائنات من الذاكرة
يوجد طريقة خاصة للأدوات و هي تنفيذ الإجراء Dispose
و عيب هذه الطريقة أنه سيحدث خطأ إذا كان هناك متغير آخر يستخدم هذا الكائن
و عيب هذه الطريقة أنه سيحدث خطأ إذا كان هناك متغير آخر يستخدم هذا الكائن
Dim B As New Button
B.Dispose()
أو باستخدام الكلمة Using التي ستحذف الكائن عندما تنتهي من استخدامه
Using B As New Button
End Using
using (Button B=new Button())
{
}
يتم حذف الكائن من الذاكرة عند عند عدم وجود أي متغير يحتوي على مرجع له إما باستخدام القيمة Nothing
Member = Nothing
Member = null;
أو بانتهاء عمر جميع المتغيرات التي تستخدمه
تقوم لغة التنفيذ CLR بتنشيط الزبّال Garbage Collector GC لتفريغ الذاكرة من الكائنات الغير مستخدمة و فقاً لشروط معينة
و يمكن تنشيطه بالكود التالي:
و يمكن تنشيطه بالكود التالي:
GC.Collect()
- Value Variablesمتغيرات القيمة تخزن قيم البيانات و ليس مرجع لها
مثل أنواع المتغيرات القياسية Integer أو String
و تكون معالجتها أسرع لأنها تخزن في بايتات محدودة أما الكائنات فتحتاج لبناء مركب لتخزينها
Dim Number1, Number2 As Integer
Number2 = 29
Number1 = Number2
Number2 = 40
ستتم كتابة القيمة الجديدة فوق القديمة ومع أن قيمة المتغيرين واحدة إلا أنهم مستقلين و ستتغير قيمتهم عند تنفيذ السطر الثالث
لو كانا من نوع متغيرات المرجع سيشيران لنفس الكائن بعد السطر الثاني و لن تتمكن من وضع قيم مختلفة فيهم
يتم تحويل متغيرات القيمة إلى إلى متغيرات مرجع فقط عندما تتعامل معهم على أنهم كائنات باستخدام وظائفهم و تسمى هذه العملية Boxing
لو كانا من نوع متغيرات المرجع سيشيران لنفس الكائن بعد السطر الثاني و لن تتمكن من وضع قيم مختلفة فيهم
يتم تحويل متغيرات القيمة إلى إلى متغيرات مرجع فقط عندما تتعامل معهم على أنهم كائنات باستخدام وظائفهم و تسمى هذه العملية Boxing
MessageBox.Show(Number1.ToString());
مواضيع أخرى قد تهمك :

يمكنك التعليق باستخدام الفيس بوك
0 تعليقات
اترك تعليق
المتابعون
خدمات اخري
المواضيع الاكثر مشاهدة
- مفاجأة:حمل من الميجا أبلود و الرابيدشير و الهوت فايل من الأوبرا و بروكسى الكمبيوتر..
- موعد الاعلان عن الجهاز اللوحى والجوال ASUS Padfone 2
- صور خريطة ولاية صباح السياحية Sabah maps
- برنامج خواطر 5 الحلقات الثالثة عشر والرابعة عشر والخامسة عشر
- اسعار موبايلات HTC من الوكيل واسئلتك قبل شراءWindows Mobile
- فرص عمل وظائف اليوم في مصر 31-7
- الأشعل : مبارك كان يحتقر القضاء بسبب وظيفة والده
- زين السعودية تطلق خدمة رسائل فيسبوك الفورية
- معاش أغسطس وفروق 2008 غدًا بمكاتب التأمينات الاجتماعية ويومي 10 و20 بالبريد
- سعر الذهب اليوم 31-7-2011
ما هو رأيك فى الموقع
روابط
الارشيف
- ديسمبر (1)
- يوليو (15)
- يونيو (516)
- مايو (64)
- أبريل (29)
- مارس (25)
- فبراير (52)
- يناير (56)
- ديسمبر (66)
- نوفمبر (54)
- أكتوبر (55)
- سبتمبر (70)
- يوليو (1)
- يونيو (1)
- مايو (10)
- أبريل (1)
- مارس (3)
- فبراير (8)
- يناير (25)
- ديسمبر (102)
- نوفمبر (186)
- أكتوبر (242)
- سبتمبر (308)
- أغسطس (257)
- يوليو (370)
- يونيو (282)
- مايو (416)
- أبريل (556)
- مارس (1848)
- فبراير (1734)
- يناير (1128)
- ديسمبر (796)
- نوفمبر (741)
- أكتوبر (660)
- سبتمبر (520)
- أغسطس (490)
- يوليو (665)
- يونيو (742)
- مايو (366)
- أبريل (340)
- مارس (325)
- فبراير (184)
- يناير (320)
- ديسمبر (182)
- نوفمبر (130)
- أكتوبر (77)
- سبتمبر (74)
- أغسطس (101)
- يوليو (81)
- يونيو (181)
- مايو (329)
- أبريل (241)
- مارس (49)
- فبراير (25)
- يناير (31)
- نوفمبر (1)
- يونيو (2)
- مايو (5)
- أبريل (7)
- مارس (7)
- فبراير (12)
- يناير (15)
- ديسمبر (13)
- يناير (1)