الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مميزات لغة C++ عن لغة C

مغلق
بدأه cold0zero في 5 يناير 2004 · 2 رد · 14,997 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

تدعم لغة 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 ):

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

وكذلك الحال عندما تعلن فصيلة عن فصيلة صديقة، فإنها تسمح لجميع دوال الفصيلة الصديقة باستخدام بيانات الفصيلة الأساسية.

وسيأتي الحديث بالتفصيل عن الدوال الصديقة في فصل الفصائل والكائنات.

#2

السلام عليكم ,,

اقتباس
محدد الحماية متاح لنفس الفصيلة متاح للفصائل المشتقة متاح للكائنات من فصائل أخرى

public نعم نعم نعم

protected نعم نعم لا

private نعم لا لا

بالفعل محددات الوصول ,, مع أنواع الوراثة بنفس مستوايات محددات الوصول الثلاث "بالأصح الأربعة " تعطي هندسة برمجة غير طبيعية للبرنامج ,, حيث لم أجد مثلها في أي لغة على الاطلاق ,, حيث تم تقييض بعضها لنسخة السي++ دوت نت ,, نظرا لتعقيدها ,,

بارك الله فيك أخي cold0zero ,, على التعريف بهذه الميزات الأساسية والمهمة فعلا ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#3

السلام عليكم تعقيبا على موضوعكم انا درست الc وكذلك درست الjava ووجدت فرقا شاسعا بينهما ولكن تعتمد على نفس النمط ولكن تختلف قليلا في التفكير وانا الان اريد ان اتعلم لغة الc++ ولكن حسب ما ذكر اخي الكاتب وجدت ان لغة الc++ لاتختلف عن الjava لإحتوائها على نفس العناصر الانفة الذكر وشكرا على كل حال

طلب:

اريد مرجع يمكنني من دراسة الc++ وبأي لغة كانت العربية او الانجليزية

هذا الموضوع مغلق.

مواضيع مشابهة