المنهج الكائني في السى بلس بلس

المنهج الكائني

الفكرة الاساسية في المنهج الكائني ان تدمج البيانات والدوال التي تعمل عليها في وحدة واحدة تسمي كائن Object وان التعامل مع بيانات لا يكون إلا من خلال دالة من دواله , والتى تسمي دالة منتمية ( للكائن ) member Function تمييزا لها عن الدوال التي لا تكون عنصرا من عناصر كائن ما , والتى نسميها دالة مستقلة Stand alone Function فاذا ما اردت قراءة بيان ما استدع الدالة الخاصة بذلك في كائنة , فهي التي ستقرأ هلك وتعيد لك قيمته , فالبيانات مخفية عن الكائنات الأخرى وهى بالتالي في مأمن من ان تشوه عن طريق الخطأ ويمكن تصور ان البيانات ودوالها قد وضعها في كبسولة واحدة ولذا فان هذا مفهوم الكبسلة encapsulation واخفاء البيانات data hiding هما من المفاهيم الركيزية لمنهج البرمجة الكائنية وعلى ذلك فالبرامج المكتوبة بلغة السى بلس بلس تتكون من كائنات تتعامل فيما بينها من خلال دوالها , كما هو مبين في الشكل 1 - 3 .
The object-oriented paradigm
ومن الجدير بالذكر ان ما يسم دوال في لغة السى بلس بلس يطلق عليها method في لغات كائنية أخرى , مثل لغة Small Talk وهى من اوائل اللغات الكائنية كما ان استدعاء الدوال Calling a Function يسمى Sending a message كما يطلق على البيانات المنتمية للكائنات instance variables وهو ما نترجمه بيانات مستحدثة ( راجع القاموس في الملحق الخاص به )
ويمكن تشبيه المنهج الكائني بالتنظيم الاداري , حيث تقسم المنشأة إلى ادارات , كل إدارة مختصة بمهمة معينة وتحتفظ عن طريق موظفيها بالبيانات اللازمة لها , والتى لا يفترض ان يطلع عليها أو يتعامل فيها سواهم , ومن الطبيعي ان يكون الاتصال بين الادارات لطلب بيانات أو اتخاذ إجراءات من خلال الموظفين المسئولين بها , كما هو مبين بشكل 1 - 4 .
The corporate paradigm

الفكر الكائني , منهج تنظيمي

لتتذكر على الدوام ان البرمجة الكائنية ليست مهتمة فى المقام الاول بعمليات البرمجة التفصيلية بل تهتم اساسا بالتنظيم العام للبرنامج . فالكثير من العبارات فى برامج السى بلس بلس مشابهة لبرامج البرمجة الاجرائية وبرامج لغة السي على وجه الخصوص وليس ذلك ان تحس بما اذا كانت عبارة او دالة تنتمي الى لغة اجرائية او كائنية الا بالنظر الى جزء كبير من البرنامج .

خصائص اللغات الكائنية

لنعرض فى عجالة لاهم عناصر اللغات الكائنية عامة , ولغة السى بلس بلس خاصة :

الكائنات :

حينما تعرض لك مشكلة فى البرمجة الكائنية , لن تتساءل كما كان سابقا عن كيفية تحليل المشكلة الى دوال , بل كيف تحلل الى كائنات وستجد ان التفكير بمفهوم الكائنات بدلا من الدوال له تاثير مدهش على طريقة تنظيم البرنامج . هذا الاثر ينبع من التشابه بين الكائنات فى مفهوم البرمجة الكائنية والحياة الواقعية .
ما هى الاشياء التى تصلح للتمثيل ككائنات فى برامج كائنية ؟ ان الاجابة تتوقف فقط على مقدرتك على التخيل . واليك بعض الفئات التى يمكنك البدء فى تصورها :
· كائنات مادية :
- المركبات فى برنامج تمثيل للمرور .
- قطع المكونات الكهربية فى برنامج لتحليل الدوائر الكهربية .
- الدول فى نموذج اقتصادي .
- الطائرات فى برنامج للتحكم فى الطيران .
· عناصر فى بيئة الحواسب :
- النوافذ .
- القوائم .
- العناصر الرسومية ( الخطوط , الدوائر .. الخ ) .
- ادوات العمل على الحاسوب ( الفارة , لوحة المفاتيح .. الخ ) .
· هياكل تخزين البيانات :
- المصفوفات arrays .
- المكادس stacks .
- القوائم المترابطة linked lists .
- التفرغات الثنائية binary trees .
· البشر :
- الموظفون .
- الطلبة .
- العملاء .
- البائعون .
· تجمعات البيانات :
- المخزون .
- ملف الموظفين .
- قاموس لغوي .
- جدول بخطوط الطول والعرض لمدن العالم .
· أنواع البيانات الشهيرة :
- الزوايا .
- الوقت .
- الاعداد المركبة .
- النقاط على مستوي .
· عناصر الالعاب الحاسوبية :
- الاشباح في المتاهات .
- الوضع على لوحة ( شطرنج , ضامة ) .
- الحيوانات .
- الخصوم والاصدقاء .
ان التشابه بين الكائنات والعالم الواقعة هو النتيجة السعيدة لدمج البيانات مع الدوال , والكائنات المتولدة عن ذلك تمثل ثورة حقيقية فى عالم البرمجة , ان هذا التشابه هو ما يفتقد فى البرمجة التقليدية .

الفئات

فى البرمجة الكائنية نقول ان كل كائن ينتمي الى فئة Class فما معنى ذلك ؟ فلننظر إلى شيء مشابه , كافة لغات البرمجة تقريبا تحتوي على أنواع من البيانات خاصة بها , فمثلا النوع int هو من الانواع المعرفة في لغة السي , ويعنى integer اى عدد صحيح فيكون بامكانك ان تعرف اى متغير بانه من هذا النوع على النحو التالى :
Int day
Int answer
وهكذا .
وبطريقة مشابهة يمكنك ان تعرف كائنا فانه من فئة معينة كما هو موضح بشكل 1 - 5 فالفئة تعمل كمواصفات للكائنات التي تنتمي إليها , بمعنى أنها تحدد ما يتضمنه نوع ما من الكائنات من أنواع البيانات والدوال التي تطبق عليها , فالتعريف بفئة لا يطلق اى كائنات بالضبط كما ان تعريف نوع من المتغيرات لا يخلق اى متغير .
فالفئة اذن هي مجموعة ن الكائنات وهو ما يتفق مع مفهومنا في الحياة العامة عن الفئات فكل من بيتهوفن وموزارت وشتراوس " موسيقار " وبينما ليس هناك فرد معين يسمى " موسيقار " فكل فرد يملك امكانيات الانتماء لهذه الفئة يطلق عليه هذا الوصف .
A class and its objects

تعليقات

المشاركات الشائعة من هذه المدونة

المؤثرات الحسابية في C++

الرسم Graphics

دوال النمط الرسومي في ++C