قصة ظهور قاصمة الظهور
البرمحة الكائنية التوجه
رأينا في الجزء الأول من السلسلة المكتوبة
"قصة ظهور قاصمة الظهور" نبذة موجرّة
عن تاريخ البرمجة الكائنية التوجه 0086
0710980119 011801860 وتركنا الخوض في
تفاصبلها إلى الأجزاء المقبلة وألتي يمثل هذا
العدد أحد عارضي هذه الأجزاء إذ سنتناول
فيه بحول الله وقوته بعض المغافيم
الأساسية للبرمجة الكائنية التوجه سعيا
منا إلى التدرج في عرض كل مقاهيمها إلى
أن نأتي عليها
أمالغة البرمجة التي ستعتمدها في شرح
هذه المفاهيم فهي لقة الفيجوال بيسك
الشروحات على باقي اللغات التي تتبنى نمط
البرمجة الكائنية التوجه
تمط البرمجة كائنية التوجه كنمط برمجي
أساسي في البنية الجديدة لتهذه اللغة
البرمجي مثل القتات 135565) والكائنات -0ا0
5 والمشيدات 15] 0051110310 والملهدمات
والوظائف 18611005 والتغليف -3ا0ا5م008ع
0 والوراتة 111803068 و تعده الأشكال
7 ا وإعادة التعريف -[01/81110
9 والتظليل 5130000 وغير ذلك من
المفاهيم المتعلقة بالبرمجة الشيئية
كثرة المقاهيم الكائنية وسهولة الخلط بين
مسمياتها مثل 0781010805 و 078111185 و
080808 يتسبب في جعلها غصية
على اتفهم, وإن تم استيعابها تكون عصبة
على التذكر لذلك ستحاول في غضون هذه
السلسلة المكتوبة التطرق إلى كل مقهوم
بأسلوب سلس
ذكرنا فيما مضى أن البرمجة الكائنية
التوجه 09:300109] 018011801 اع رطان
5 ليصبح الكود شبيها بالحياة
الواقعية حيث يصبح النوع اتشامل عبارة
تصبح عبارة عن :00[80 بينما الدوال
والإجراءات تصبح عبارة عن وظائف -1610
عبارة عن تمثيل شامل تتوع معين, فلو أخدّنا
على سبيل المثال "سيارة 8)" فهي تمثيل
شامل لنوع معين لكن حينما تحدد نوعا
نتكلم عن كلاان 00601 مستنسخ من
الفئة لقنا
لترسيخ الفكرة في أدذهاتنا فكر في أي تمثيل
عام لكان معين خذ "الخاسوب" مثلا أليس
الخاسوب تمطا عاما لمجموعة من الأجهزة
أليست كل الأجهزة التي تسميها حواسيبا
الأجهزة "الاشتغال والتوقفا وتخزين
ومعالجة البيانات"؟ إذن يمكننا أن نعتبر
التخصيص إذن نحن بدأنا نتكلم عن
المحجوزة 1355 متبوعة باسم الفئة فلو
أردنا إسقاط الكلمات السابقة تطبيقيا
فإن كود إنشاء لفئة "حاسوب
كل فئة قد تتكون من ثلاثة أجزاء:
الخصائص 02008]085: وهي مواصفات
اتوظائف 0810005" الأعمال واتسلوكبات
التي تقوم بها الفئة
الأحداث 2178715 أفعال مرتبطة بالكائتات
تؤدي عند حصولها إلى استدعاء وظائف
على سبيل المثال حينما نتحدث عن الفئة
"حاسوب 6:8ألا00اق" فيمكننا اعتبار ثون
لذلك بمكننا كتابتها داخل الفتة على
شكل متغيرات تسمى في عرق البرمجة
الكائتبة بالحقول كلا16] أو كغأناظا تا
في المثال الأتي فمنا بكتابة الحقول المميزة نقئة الحاسوب:
18 انكل بيدا
لاحظ أننا قبل كتابة أسماء حقول الفئة وضعنا الكلمة !نالا التي تنتمي إلى أسرة محددات
الوصول 1000855 000855 وسميت كذلك لأنها نمكننا من تعريف مجال الوصول إلى هذا الحقّل
في لغة الفيجوال بيسك دوت نيت ثتكون أسرة محددات الوصول من أربعة كلمات وهي كما يلي:
محدد الوصول شرحه
ااانا إذا أعلنا عن متغير أو وظيقة أو أي عنصر من عناصر الفئة بالكلمة 00016 فهذا يعني أنه
مكننا الوصول إلبه داخل الفئة الني ختوبه وخارجها كذلك بل وخارج المشروع الذي توجد فيه هذه
الفئة أيضا, معنى لو لدي مجموعة من المشاريع وواحد منها يوجد به عنصر مغلن عنه محدد
الوصول انالا فيعني ذلك أنه بمكنتي استخدامه داخل كافة المشاريع الأخرى
0 مثلها متل 016 تسمح لنا بالوصول إلى العنصر من داخل وخارج القئة التي ختويه
لكن مجال الوصول يتوقف عند اللشروع الذي يضم هذه القئة بحيث لو أردث استخدام هذا
العنصر داخل مشروع آخر فلن مكنني ذلك على خلاف محدد اتوصول عزاطن
060 هذه الكلمة تعتي أن العنصر المعلن عنه بها يمكننا الوصول إليه فقط على مستوى
الفئة التي خختويه وكذلك الفئات المشتقة متها إستتطرق إلى مفقهوم الاشتقاق / الوراثة في
فصل قادم)
استبدال نوع البيانات باسم الفئة مع ضرورة كتابة الكلمة 60ل كما يلي:
16 010_كا سعلا فط عنام 010 010
مجلة الرابط - العدد 2 أكتوبر 2015
5ن اعأنام 11م 11001 أععزطه 0810 ع31أ؟ 0530|
0010018_جاب سقاا كم عنام 0م اران
5 - ععاظ انام 00
الحصول على قيم الحقول"'
(2) [10(41 )01031 1197 511) سما 165532988
يوجد في البرمجة الكائنية مفهوم مهم يسمي 81680530017 والذي تستطيع الاصطلاح عليه
بالتغليف, ويعني هذا المفهوم أن نخفي الكود الخاص بالفئة عند التعامل مغ كائنات مستتنسخة
متها, فبدل أن يستعرض المبرمج الثاني أكواد فئاتتا بصبح قادرا فقط على مشاهدة أسماء
الوظائف والخصائص فقط لذلك ينبغي أن تعلن دائما عن حقول إلفئة بمحده الوصول 111/218 لكي
لا يراه المبرمج الثاني ونستعيض عن اسم الحقل بمقهوم جديد يسمى الخصائص 0]1008]185 تكون
عامة الوصول !اناا" بينما تصبح الحقول خاصة الوصول 0017316
كل حقل من حفول اتفئة علينا إنشاء خاصية له حسب دوره, فإن كان بعطي معلومة فقط أعلنا
(1]80! وإلا فإنتا في الوضع العادي تستفقني عن الكلمتين معا وتعلن عن الخاصية بشطريها
ا6018, وجزء مكننا من إسناد قبمة ما تهذا الحقل وبسمى :581186
لإتشاء خاصية لحقل ماء يتبغي أن نكتب محده الوصول أولا (والأفضل أن بكون ع انالا احتراما لدور
الخصائص وهو تغليف الحقول) ثم الكلمة المحجوزة /(5008]1 متبوعة باسم الخاصية ويتوعها
(نفس نوع الحقل المراد إنشاء الخاصية له) وهذا مثال على إنشاء خصائص لكاقة حقول الفئة
"حاسوب 14 0ا10ا00)_مل"
8ع011001_جا وعدا
معطا / كعاءاع'
و كه 1019 عتقبوم
عدن قا ع سناعةأنامد انا _أه_عا3نا عثقلا
3 6 بوتتعمم_ا1018 باتعمم عنامي
يلق ح 1908١
فضا دنع
عالق ” ح 1688م
علدنا دض عنالة/) ا56
عالق < ع لأا _أه_عا 0
5 قمع
لو دققت جيدا في الكود أعلاه ستلاحظ أن الخصائص معلن عنها محدد الوصول أنالا, بيتما
الحقول أصبحت 2178168 وهذا وجهء من وجوه التقليف 106305131000] بحبث ينم حماية بيانات
الكائن داخل الفئة ولا يستطيع المبرمج الثاني التعامل معها إلا من خلال الخصائص والوظائف
من جزعين الجزء الأول عبارة عن 5861167 بمكننا من الحصول على قيمة الحقل والجزء الثاتي عبارة عن
8 بجكننا من إسناد القيمة إليه
تمكننا الخصاتئص مز قراءة و إسناد القيم لحقول الفئة بحيث بمكننا التعامل مع الكائن السننسخ
1٠ ل010_كل سعلا كذ عنام 0م تدان
هعم" ح معدم _ا1100 :آنا 00111
(24 12 ,081611062006 معلا جح زجاع م10 _ ساعة1ا ١137 011011811031601
عالقا 5811100"
0021012 1097 1أ5) مم5 لاه 8 و6652
لانم 0و اعد أنامة أ علو 01011910
يمكتنا فصل الجزءين المكونين للخاصية عن بعضهما البعض أو الاكتفاء بأحدهما حسب طبيعة
الحقل قلو أردنا أن يكون أحد الحقول للقراءة فقط تستقتي عن الجزم ]58 ونعلن عن الخاصية
بالكلمة المحجوزة ((188001] كما يلي:
مجلة الرابط - العدد 2 اكتوبر 2015
أوجه الاختلاف والائتلاف
الفئات المجردة 0135565 0513861 هي تمثيل مجرد لنوع معين ومن مقتضيات
هذا التمثيل ألا يكون له وجود واقعيا إذ يبقى في حيز التجريد والاصطلاح فقط ما
يترتب على هذا المعنى من إلغاء لعملية الاستنساخ 1051306181600 إذ من المعلوم
أن الفئات المجردة في البرمجة الكائنية التوجه لا تسمح باستنساخ كائنات متها
ويبقى دورها محصورا في عملية تعريف العناصر الأساسية للفئات بغرض توريثها
ومكن للفئة المجردة أن تشتمل على وظائف مجردة 0610005 2051861 قابلة
وظيفة مجردة والوظائف المجردة هي وظائف لا توي على أية أوامر برمجية -0016|
00 ), بل تعرض فقط تعريف الوظيفة أو ما يعرف بالتوقيع 59081076 كما
يوضح المثال التالي:
مجلةٌ الرابط - العدد 2 اكتوبر 2015
0 ثققاء 26 لاكطة
بعسقه 511109 266500 ع اطلام
الفتة 085017 فئة مجردة وعلامة ذلك أمر التعريف 2050862 الذي تقدمها وهي نوي على حقل
من نوع تصي اسمه 1316 يأخذ قيمته في مشيد الفئة 100517102101 (علما أن اللشيد في الفئات
المجردة لا معتى له, بيد أن دور اللشيد هو تشييد الكائنات في زمن الاستنساخ ومادام الاستتساخ
غير مكن من الفثئات المجردة فلا فيمة لوضع المشيد هنا لكن يتم وضعه لتحديد فيم بدنبة للحفول
الشيدات الفرعية عبر الكلمة 0358 كما سيآتي معنا)
بعد ذلك قمنا بتعريف وظيفة مجردة 0161000 3051301 أسميناها ؟|]0/ا هاته الوظيقة سنقوم
بإعادة تعريقها في القثاث المشتقة عبر استخدام الأمر 0017611108 كما يعرض الكود التالي:
:12و00 كفقاء
بإمصسصقضاع 5ط : (عقة وماناء لاللقاءم؟ 3018150109 و0109 علاطانام
(101 عامل 108 قب عثاطايام
مجلة الرابط - العدد 2 أكتوبر 2015
داخل هاته اتفئة المشتقة قمنا بإسناد قيمة بدئية تلحفل _-118018 من جدبد عبر الأمر 03898 الذي
بحيل إلى الفئة الأصلية كما قمنا بإعطاء قيمة بدئية لحقل جديد أسميناه (لال8618م5
ثم في الجزء الأهم قمنا بإعادة تعريف الوظيفة المجردة 011 من خلال الأمر 07811108 وبالثالي عند
استدعاء هاته الوظيفة عبر كائن مستنسخ من القنة 7007311016 سيتم تنفيذ الكود الموافق
ومظأئ! كفقاء
09300 سد | أمظ بلا نما ]019932102
إذن كخلاصة فالفئات المجردة هي عبارة عن فئات تقوم بتعريف العناصر العامة تنوع معين, ولا
تسمح بعملبة الاستتساخ المباشر منها بل نسمح بذّلك فقط عبر ألبة التوريث / الاشتقاق -0|
المجردة
الواجهفات 119+180685|:
تقوم الواجهة 0160208| بتعريف الوظائف التي على القئات - التي ستقوم بتطبيقها - إعادة
7 بل ختوي فقط على تعريف تتوقيعات الوظائف الواجب إعادة تعريفها على مستوى الفئات
التي ستستخدم هاته الواجهة
سؤال وجيه و حق له أن يطرح وكجواب مبدئي بمكننا القول أن الواجهات في اللغات الحديتة مثل
سي شارب وجافا وفيجوال ببسك دوت نبت, أنت كحل حاسم لأزمة الوراثة اتتعددة -211ط عام اانا
8] إذ من المعلوم أن هذه اللغات الثلاثة التي ذكرناها ا تسمح بالوراثة المتعددة, بمعنى أن فئة