تدعم لغة C++ أسلوب برمجة الكائنات الموجهة وبالإضافة لذلك تمتاز لغة C++ بالعديد من المزايا والتي سنتناولها فيما يلي بشيء من التفصيل.
المزيد من الحرية في الإعلان عن البيانات :
في لغة C يشترط الإعلان عن المتغيرات في مستهل البرنامج، وعند الحاجة لمتغير جديد لابد من الرجوع لأول البرنامج و الإعلان عنه.
ومع لغة C++ ينتفي هذا الشرط إذ يتمكن المبرمج من تعريف المتغيرات وقت الحاجة إليها وفي أي مكان.
ويمكن للمبرمج الاقتصاد في استخدام الذاكرة باستخدام هذه الميزة ولتوضيح ذلك فلننظر للمثال التالي
#include <stdio.h>
main()
{
int I;
scanf(“%d”,&I);
if (I>5)
{
int j;
printf(“Enter the second number ”);
scanf(“%d”,j);
printf(“ the result is “,j*I);
}
}#include <iostream.h>
void Add(int a=5,int b=9){
cout << a+b;
};
main()
{
Add(4,6);
Add();
}يجب مراعاة أن التعليق لو جاء في عدة أسطر لزم وضع العلامة " // " في أول كل سطر ، ومن الممكن في هذه الحالة وضع التعليق بين العلامتين المعتادتين لتلافي الخطأ عند نسيان وضع العلامة " // " في أول السطر.
القدرة على إنشاء واستخدام الفصائل:
وهذه الميزة من أهم المميزات والتي تجعل لغة C++ تدعم أسلوب برمجة الكائنات الموجهة ويتم إنشاء الفصيلة باستخدام الكلمة المحجوزة ( class ) وذلك تبعا للصورة العامة الموضحة بالشكل التالي
class class_name{
private:
private data and functions
public :
public data and functions
}حيث يعطى اسم الفصيلة بعد الكلمة المحجوزة ( class )ويتوالى بعد ذلك تعريف البيانات والدوال.
تحديد درجة حماية البيانات :
تتيح لغة C++ تحديد درجات لحماية البيانات وذلك على مستوى الفصيلة، وتتحدد درجة الحماية باستخدام الكلمات ( public , private , protected ) ويوضح الجدول التالي درجات الحماية المختلفة
محدد الحماية متاح لنفس الفصيلة متاح للفصائل المشتقة متاح للكائنات من فصائل أخرى
public نعم نعم نعم
protected نعم نعم لا
private نعم لا لا
و بالتقدم في البرمجة سنألف استخدام محددات الحماية، وسنتعرض لها بشيء من التفصيل عند الحديث عن الفصائل والكائنات.
دوال البناء والهدم ( constructors and destructors ):
كما ذكرنا سابقا فالفصيلة تتكون من بيانات و دوال تتعامل مع هذه البيانات، وتتيح لغة C++ للمبرمج أن ينشئ دالتين خاصتين تسمى إحداهما دالة البناء ( constructor ) وهي دالة تنفذ تلقائيا عند الإعلان عن كائن من هذه الفصيلة. وتظهر فائدة هذه الدالة عندما نرغب في تخصيص قيم ابتدائية لبيانات الفصيلة.
أما الدالة الأخرى فهي دالة الهدم ( destructor ) وتنفذ تلقائيا عند انتهاء استخدام الفصيلة وتستخدم هذه الدالة لتحرير أجزاء من الذاكرة كنا نستخدمها أثناء استعمال الفصيلة ولم نعد بحاجة إليها، أو لتنفيذ سطور معينة عند الانتهاء من استخدام الفصيلة.
ودالة البناء تحمل نفس اسم الفصيلة، فمثلا لو كان اسم الفصيلة ( Ball) كانت دالة البناء تحمل الاسم ( Ball ).
أما دالة الهدم فتأتي بنفس اسم الفصيلة مسبوقا بالعلامة( ~ ) فللفصيلة السابقة دالة الهدم تحمل الاسم ( ~Ball ).
التوريث ( Inheritance) :
من أقوى خصائص برمجة الكائنات الموجهة خاصية التوريث. ونعني هنا توريث فصيلة إلى فصيلة أخرى.
وهنا ترث الفصيلة المشتقة ( derived class ) من الفصيلة الأساسية ( parent class) كل بياناتها ودوالها ويمكن التعديل بعد ذلك في خصائص الفصيلة المشتقة لتناسب الاحتياجات الجديدة، بإضافة المزيد من البيانات والدوال.
وبذلك نجد أن برمجة الكائنات الموجهة تعفي المبرمج من إعادة بناء البرامج من الصفر بل يعتمد على ما سبق لإنجاز البرامج الجديدة، فتمكنه من استخدام الفصائل السابقة و عمل فصائل جديدة للاستفادة منها مستقبلا.
الدوال الصديقة( friend functions ):
عندما تعلن فصيلة عن دالة صديقة أو عدة دوال صديقة فإنها تسمح لهذه الدوال باستعمال البيانات الأعضاء فيها ولا تسمح لغير هذه الدوال بذلك.
وكذلك الحال عندما تعلن فصيلة عن فصيلة صديقة، فإنها تسمح لجميع دوال الفصيلة الصديقة باستخدام بيانات الفصيلة الأساسية.
وسيأتي الحديث بالتفصيل عن الدوال الصديقة في فصل الفصائل والكائنات.
