البرمجة غرضية التوجه 2

عام 0 geek4arab الوسوم:,

البرمجة غرضية التوجه

تمهيد:

كانت البرامج القديمة تسير من البداية إلى النهاية دون توقف مؤدية عملية محددة، ثم طورت البرمجة المسيرة بالأحداث حيث يتعلق سير البرنامج بانطلاق أحداث محددة كأن يضغط المستخدم زر الفأرة على زر الحفظ في شريط الأدوات مثلاً حيث يقوم البرنامج بحفظ الملف عندها وعند النقر على زر آخر يقوم البرنامج بعمل آخر أما إذا لم يطلق المستخدم أية أحداث فإن البرنامج سيبقى ساكناً. لذا لم يعد ينظر إلى البرنامج كوحدة متصلة بل كمجوعة من الإجراءات المنفصلة ويكون كل إجراء متاح للعديد من الإجراءات الأخرى فعند الضغط على زر الحفظ يحدث إجراء الحفظ، ويمكن للإجراء أن يستدعي إجراء آخر فيما كان يشبه قديماً عبارة Go To، فعند النقر على “حفظ باسم” يحدث إجراء حفظ باسم الذي يسأل عن اسم الملف ثم يستدعي إجراء “الحفظ”. وكمثال أبسط يمكن تصميم إجراء يقوم بحساب الوسط الحسابي لعددين ثم استخدام هذا الإجراء لتصميم إجراء يحسب الوسط الحسابي لعشرة أعداد.

وفي البرمجة الكائنية “البرمجة غرضية التوجه” أصبح بالإمكان تصنيف الإجراءات في وحدات فئات منفصلة تدعى صنف class ويضم كل صنف عدد من الإجراءات خاصة يمكن أن تستدعيها الإجراءات الموجودة داخل الصنف نفسه فقط وعامة يمكن أن تستدعيها الإجراءات الموجودة في أي صنف وهذا الأمر يتيح تبسيط البرامج كما يمكن من استخدام الصنف الواحد في أكثر من برنامج.

بين الصنف وكائن:

كل ما في الوجود هو كائن فأنا وأنت وهذه الورقة والقلم كلها كائنات Object ولك منها خصائص محددة ويستطيع القيام بعمليات محددة. أما الصنف فهو مجموعة من الكائنات المتشابهة فالرجال صنف وزيد كائن منه والنساء صنف ونور كائن منه. وكمثال آخر الصنف البرمجي: “بطاقة دوام” الذي يحوي الطرائق المطلوبة لحساب الأجر و عدد ساعات الدوام أما الكائن “بطاقة دوام سامر” والكائن “بطاقة دوام حسن” فإنهما يستفيدان من الإجراءات الموجودة في الصنف “بطاقة دوام” لحساب أجر سامر أو أجر حسن

فوائد الأصناف:

· التجريد: إن خصائص صنف ما تنطبق على جميع الكائنات المشتقة منه وليس على كائن بعينه فالصنف بطاقة دوام يحوي على إجراء لحساب أجر العامل تبعاً لرتبه وساعات دوامه دون التقيد بشخص محدد ويمكننا وفي أية لحظة يمكننا التصريح عن بطاقة دوام سامر وزياد وعمر وللوصول إلى (أجر عمر) مثلاً فإننا نستخدم عامل النقطة

SamerCard.Scale

· التغليف: وهو حجب الإجراءات الخاصة التي تستخدم ضمن الشيفرة المصدرية لذلك الصنف من دون أن نحتاج إلى استخدامها في باقي أجزاء البرنامج.

· تعدد الأشكال: عندما نطلق اسماً ما على إجراء في صنف محدد فإننا لا نهتم مطلقاً بوجود إجراءات أخرى تحمل نفس الاسم خارج ذلك الصنف.

· الوراثة: إمكانية تعريف أصناف جديدة على أنها مشتقة من أصناف أخرى بمجرد تعريف صنف المربعات على أنه صنف مشتق من صنف المستطيلات فإننا نتمكن فإن ذلك يعني أن المربع يملك جميع خصائص المستطيل.
الوراثة بين الفئات

الفئة:

الفئة هي مجموعة من الكائنات المتشابهة فالرجال فئة وعمر وزياد كائنات في هذه الفئة والنساء فئة ونور من كائناتها.

الوراثة بين الفئات:

تختلف الوراثة بين الفئات عن الوراثة بين الكائنات بشكل جذري فلا يمكننا القول بأن الابن هو أبيه وأيضاً لا يملك الابن جميع صفات أبيه في حين أنه يمكننا القول بأن “الحمضيات” هي “أشجار مثمرة” إذ أن فئة الحمضيات تمتلك جميع صفات فئة الأشجار المثمرة وتزيد عليها بعض الصفات الإضافية فعند تعريف فئة “مستطيلات” في أحد برامج الرسم فإنها تزود بطريقة لرسم المستطيل وإذا كان رسم المربعات يتم بشكل متكرر فربما تعرف الفئة “مربعات” على أنها فئة ابن للفئة “مستطيلات” تتمتع بصفة إضافية هي تساوي الطول والعرض وبمجرد حدوث ذلك فإن هذه الفئة ستتمكن من رسم المربعات دون أن تحتوي على إجراءات خاصة بها لرسم المربع إذ أنها ستسأل عن طول ضلع للمريع ومن ثم ترسم المربع على اعتباره مستطيل تساوى طوله مع عرضه.

توجد الكثير من الميزات الأخرى للبرمجة الكائنية يمكن التعرف عليها من خلال الكتاب.
أهم ميزات لغة باسكال:

○ امكانية تنفيذ برامج باسكال من خلال دلفي بمجرد ادراج السطر التالي في ملف البرنامج

{$APPTYPE CONSOLE}

○ تعدد أنواع البيانات وسهولة التعامل مع النصوص

○ وفرة التعليمات الرياضية والحسابية

○ دعم البرمجة الكائنية والوراثة

○ امكانية تضمين برامج بلغة اسمبلي ضمن برنامج باسكال

أهم حدود لغة باسكال:

○ عدم دعم الوراثة المتعددة فلا يمكن إنشاء صنف المثلث المنتظم على أنه مشتق من كلٍ من المضلعات المنتظمة و المثلثات.

○ عدم دعم التحميل الزائد للعوامل +، -، …. وبالتالي فلا يمكن تنفيذ هذه العوامل على الكائنات المنشئة من قبل المستخدم

 

الكاتب: orwh

الكاتب geek4arab

geek4arab

مواضيع متعلقة

التعليقات مغلقة