انت هنا الان : شبكة جامعة بابل > موقع الكلية > نظام التعليم الالكتروني > مشاهدة المحاضرة

محاضرة عملي 26

Share |
الكلية كلية العلوم للبنات     القسم قسم الحاسبات     المرحلة 3
أستاذ المادة علي كاظم ادريس السعدي       4/24/2011 7:22:34 AM

كيف تبني الخلايا الخاصة؟(Building Custom Classes)

 

ما هي الخلية؟:

 

تقع الخلايا Classes في موضع القلب من VS.NET، حتّى لَيمكنُك أن تقول بجرأة: إنّ كل شيء فيها ما هو في النهاية إلا خلية، وإطار العمل .NET Framework نفسه ما هو إلا مجموعة هائلة من الخلايا التي يمكنك استدعاؤها واستخدامها في لغة البرمجة التي تعمل بها.ليس هذا فحسب، فإنّ النموذج نفسه ما هو إلا خلية، تحتوي على الأدوات والكود الذي يتعامل معها.وكما قلنا من قبل، إنّ عملية تعريف متغيّر من أيّ نوعٍ، ما هي إلا عمليّة إنشاء نسخة من خلية معيّنة، بحيث تستطيع استخدام كل خصائص ووسائل هذه الخلية عبر هذا المتغيّر.ولكن... ما رأيك أن نتركنا من كل هذا الكلام، لنتعرف على الخلايا بالتفصيل؟إنّ الخليّة هي برنامج لا يمكن تنفيذه بمفرده، إذ يجب أن يتمّ استخدامه بواسطة تطبيق آخر أو جزء آخر من نفس التطبيق الذي يحتوي على الخليّة.ستسألني:

 

- أتعني أنّنا نستدعي الخليّة كما نستدعي الدوال والإجراءات الفرعيّة، باستخدام تعبير Call مثلا؟

 

- إطلاقا.. إنّ الخليّة تحتوي أساسا على العديد من الإجراءات والدوال والخصائص الخاصّة بها.

 

- إذن كيف نستخدم الخليّة؟

 

- إنّ الخلايا تكاد تكون مماثلة للسجلات Structures، ونحن نتعامل معهما بنفس الطريقة تقريبا.

 

- تعني أنّنا نعرّف متغيّرا من نفس نوع الخليّة، تماما كما نعرّف متغيرا من نفس نوع السجلّ؟

 

- بالضبط.. وهذا يعني ببساطة، أنّ الخليّة هي إحدى أنواع المتغيرات التي يعرّفها المستخدم User Defined Types، وإن كانت هي أشملها وأقواها وأهمّها على الإطلاق، كما سنرى بعد قليل.الآن تدرك بالطبع أنّك أوغلت في استخدام الخلايا، فهي ليست جديدة أو غريبة.. الجديد هو أنّك ستتعلّم هنا كيف تبني الخلايا الخاصّة بك.

 

ولكن.... لماذا أترجم كلمة Class بكلمة خليّة؟

 

إنّ كلمة Class في الإنجليزية تعني بالعربيّة "فصل" أو "رتبة" أو "طائفة".. لا أعتقد أنّ أيّا من هذه الكلمات سيكون مستساغا لديك عند قراءته في الترجمة العربيّة.. هنا كان لا بدّ من البحث عن كلمة أخرى مناسبة، تصلح كترجمة غير حرفيّة لهذه الكلمة.  والفكرة في اختيار كلمة Class جاءت من وظيفة هذه الوحدة البرمجيّة، فهي تشبه وظيفة الفصائل الحيوانيّة.. فكلّ فصيلة ينتمي إليها آلاف الكائنات التي ترث خصائص هذه الفصيلة، ولكنّ دونَ أن يمنع هذا أن يكون لكلّ كائن خصائصه وسماته المتفرّدة المميّزة له (فلا يتخيّل أن تتماثل القطط مع باقي أعضاء عائلة السنّوريّات كالنمور مثلا، رغم ما بينهما من تشابه.. كما لا يُتخيّل أن تكونَ القطط نفسَها نسخا كربونيّة من بعضها. هذا هو الأمر نفسه الذي يمكنك أن تحاكيه في البرمجة: في البداية يكون لديك خليّة/فصيلة (السنّوريّات مثلا)، قابلة للوراثة Inheritance، حيث يمكن أن ترثها خلايا أخرى (كالنمور والقطط) مع تفرّد كلّ خليّة بسماتها الخاصّة (خصائصها ووسائلها المختلفة، مثل البيئة وطريقة القنص). هذا مع إمكانيّة تعريف كائنات Objects من خليّة النمور أو خليّة القطط ، بحيث يتصرّف كلّ كائن (قط) منها بطريقته الخاصّة، في إطار كونه قطّّا وأحد أفراد عائلة السنوّريّات (نتيجة اختلاف قيم نفس الخصائص التي يمتلكها كلّ منهما، مثل الحجم ولون الفراء).. وسنتناول الوراثة بالتفصيل في نهاية هذا الفصل.هنا وجدت أن كلمة "خليّة" هي ترجمة مناسبة لمصطلح Class، وذلك لأنّها تحقّق الأمرين التاليين:

 

1- تصف هذه الوحدة البرمجيّة بدقّة، من حيث كونها عنصرا أساسيّا يدخل في تكوين منظومات أكبر (عن طريق الوراثة أو التراكيب Hierarchies).. ولقد فكّرت في البداية أنّ كلمة "لبِنَة" قد تفي بالغرض، ولكنّي سرعان ما اكتشفت عدم ملاءمتها، لأنّ الخصائص والوسائل والأحداث تعتبر هي اللبنات التي تبني الخلايا، فليست الخليّة هي أصغر وحدة برمجيّة.

 

2- كلمة خليّة مناسبة لمنظومة الوراثة، فهي لا تخلو من "الحياة"، وتتّسق مع تعبيرات، مثل: الخليّة كذا ترث الخليّة كذا، والكائن كذا نسخة من الخليّة كذا... إلخ.

 

هذا هو ما اجتهدت فيه، وأتمنّى أن تكون هذه الترجمة مستساغة لك.

 

 

بناء الخليّةMinimal :

 

أوّل خليّة سنبنيها سنسمّيها "الصغرى" Minimal، حيث سنبدأها بأقلّ الإمكانيات، وسنأخذ في زيادة إمكانياتها بالتدريج.

 

إنشاء مكتبة خلايا Class Liberary:

 

ابدأ مشروعا جديدا وأسمه SimpleClass، وأضف خلية له، بضغط اسم المشروع في نافذة متصفّح المشاريع بزر الفأرة الأيمن، واختيار "إضافة" / "إضافة خلية" Add.Add Class من القائمة الموضعيّة.. في مربع الحوار الذي سيظهر، اختر أيقونة الخليّة Class، واكتب اسمها Minimal.. عند إغلاق مربّع الحوار، سيتمّ إنشاء الملفّ Minimal.vb، الذي سيحتوي على الكود الخاص بهذه الخليّة.

 

 

وطبعا لا داعيَ للقول إنّ من حقّك تسمية الخليّة بأيّ اسم تشاء، مع مراعاة أن يكون الاسم واضحا ودالا على وظيفة الخليّة.

 

ويمكنك أن تضع الخلايا في نفس ملفّ النموذج، أو يمكنك أن تجعل له ملفا مستقلا.. بل إنّ في إمكانك أن تنشئ مشروعا لا يحتوي إلا على خليّة أو أكثر.ولكن كما ذكرنا من قبل، لا يمكن تشغيل الخليّة بمفردها، وسنحتاج لنموذج لاختبارها بواسطته.

 

افتح الخليّة، بالنقر عليها في متصفّح المشاريع مرتين بالفأرة.. ستجد مكتوبا بها ما يلي:

 

PublicClass Minimal

 

 

End Class

 

عُد إلى مصمّم النماذج، وضع زرا على النموذج، واكتب الآتي في حدث ضغطه:

 

Dim obj1 AsMinimal()

 

إنّ هذه الجملة تعرّف الكائن obj1.. ولكن ما هو الكائن؟إنّه ببساطة نسخة مستقلّة من الخليّة، يتمّ تحميلها في الذاكرة.. ويمكن تعريف أيّ عددٍ من الكائنات من نفس الخليّة، وتغيير خصائص كل منها على حدة، بدون أن
المادة المعروضة اعلاه هي مدخل الى المحاضرة المرفوعة بواسطة استاذ(ة) المادة . وقد تبدو لك غير متكاملة . حيث يضع استاذ المادة في بعض الاحيان فقط الجزء الاول من المحاضرة من اجل الاطلاع على ما ستقوم بتحميله لاحقا . في نظام التعليم الالكتروني نوفر هذه الخدمة لكي نبقيك على اطلاع حول محتوى الملف الذي ستقوم بتحميله .
الرجوع الى لوحة التحكم