بحث عن فوائد البرمجة الكائنية جاهز

فوائد البرمجة الكائنية

البرمجة الكائنية هي طريقة جديدة لتصميم وكتابة البرامج جاءت بعد البرمجة الهيكلية، وفكرتها تكمن في أن نقوم بتحويل أجزاء البرامج المختلفة إلى كائنات أو كينونات صغيرة تمثل هدف أو كائن ما.

مثلاً في برنامج لمحرك بحث يمكن أن يكون هناك كائن اسمه Site تكون بياناته عنوان موقع في النت ومسؤليته هي قراءة محتويات هذا الموقع وفهرسته في قاعدة بيانات محلية. فنلاحظ وجود عنصر البيانات، وهو عنوان الموقع، ويوجد أيضاً إجراء، مثل تحميل محتويات الموقع، ثم إضافتها في قاعدة بيانات. في البرمجة الهيكلية لا يوجد ربط بين البيانات واﻹجراءات، فمثلاً لحل نفس هذه المشكلة بطريقة هيكلية، يتم عمل إجراء أو دالة مثلاً ReadSite بالشكل التالي:

function ReadSite(aURL: string): string;

ويمكن إرسال أي موقع لهذه الدالة لتقوم بقراءة محتوياته ثم إرجاعها للمنادي. وبالنسبة للبيانات المدخلة (المتغير aURL) لا يتم اﻹحتفاظ به بعد نهاية نداء الدالة، وتصبح ليس لديه قيمة.

وعندما نُريد إدخال بيانات الموقع في قاعدة بيانات نقوم بعمل دالة أو إجراء آخر لتخزينها في قاعدة البيانات

function StoreSite(aURL: string; aContent: string): Boolean;

ولا يكون هناك ربط مباشر بين اﻹجرائين، إنما على المنادي لهما التأكد من إرسال البيانات الصحيحة في كل مرة.

إذا كان البرنامج بسيط ربما لاتكون هناك مشكلة، لكن عندما يصبح البرنامج معقد وفيه أن يحاول قراءة الصفحات التي تعذر الوصول لها في أول مرة، وأن يقوم البرنامج بقراءة عدد من الصفحات في نفس الوقت، نجد أن البرمجة الهيكلية لاتصلح لهذا التعقيد، لأنها تتعامل بفصل البيانات عن اﻹجراءات ونداء اﻹجراءات والدوال بطريقة stateless، أي لا يهم قيمة المتغيرات بعد الفراغ منها.

عندما ننظر لنفس البرنامج بطريقة كائنية، نجد أنه يمكن عمل كائن إسمه Site به بيانات وإجراءات مرتبطة ببعضها. في لغة أوبجكت باسكال نقوم بتعريفه بالطريقة التالية:

كائن = بيانات + إجراءات

وبهذا حققنا أحد مفاهيم الكبسلة، وهي أن تضع البيانات والكود في كبسولة واحدة يمكن التحرك بها كتلة واحدة، مثلاً يمكن أن تقوم بإرسال كائن (كمتغير) كاملاً إلى إجراء.

فبهذه الطريقة نكون قد حللنا مشكلة فهرسة عدد من المواقع في نفس الوقت، حيث يمكن نداء 10 نُسخ مختلفة instances من هذا الكائن، كل نسخة تحمل موقع مختلف عن النسخة اﻷخرى ولا يحدث تداخل في العناوين.

وعند نداء اﻹجلاء readSite يتم إستخدام المتغير الداخلي المربوط بالكائن fUrl/url ولا يمكن الوصول إليه بالقراءة أو التغيير، لذلك وضعنا هذا المتغير في قسم private وهو يعني عدم إمكانية الوصول له خارج الكائن، فقط تستخدمه إجراءات الكائن.

بهذه الطريقة لا يمكن تغيير العنوان بين نداء اﻹجراء readSite و sotreSite كذلك لا يمكن تغيير المحتويات. أما في حالة البرمجة الهيكلية فيمكن أن يغلط المبرمج في نداء اﻹجراء التالي:

function StoreSite(aURL: string; aContent: string): Boolean;

بحيث يعطي عنوان ومحتويات غير متعلقة ببعضها، وتنتج عنه معلومات غير متناسقة inconsistent

وبهذا نكون قد حققنا المفهوم أو الهدف الثاني للكبسلة وهو إخفاء البيانات information hiding وهي تقضي بأن البيانات المهمة يجب حجبها من المستخدم (المبرمج) إلا عن طريق مداخل محددة لا ينتج عنها تخريب للبيانات. وفي مثالنا المدخل الوحيد هو عند تهيئة الكائن.

كذلك فإنه بطريقة البرمجة الكائنية يمكن حل مشكلة أن بعض المواقع يتعذر الوصول إليها لفهرستها في بعض اﻷحيان، فيمكن بوضع متغير جديد لمتابعة أن عملية القراءة تمت أم تعذرت، ويمكن أيضاً إضافة تاريخ لآخر محاولة لقراءة الموقع، فإذا تعذرت اﻵن، يمكن أن نعيد فهرسة الموقع بعد ساعة أو يوم مثلاً.

يمكن عمل إضافة لقراءة البيانات دون تغييرها بواسطة البرمجة الكائنية، وذلك عن طريق الخصائص properties في لغة أوبجكت باسكال:

   property URL: string read fURL;

   property Content: string read FContent;

كتلخيص للكبسلة هي تحقيق شيئين:

  • جمع البيانات والإجراءات في كائن واحد نتعامل معهما كوحدة واحدة
  • إخفاء المتغيرات التي لانرغب في أن يصل إليها المستخدم وإتاحة مداخل محددة لتغيير وقراءة البيانات والمعلومات.

.
.
.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *