كائنات (سي++)

من ويكيبيديا، الموسوعة الحرة
اذهب إلى: تصفح، ‏ ابحث

توفر لغة السي++ إمكانية البرمجة الكائنية أو الشيئية، والتي تقوم على أساس تصميم نوع بيانات يحمل تحته وظائف ومتغيرات خاصة به لتنفيذ غرض معين. تعتبر لغة السي++ من أوائل اللغات التي قدمت البرمجة الكائنية.[1]

كما الحال مع بقية لغات البرجة التي تدعم البرمجة الكائنية، فإن كائنات سي++ يمكنها أن تورث وتورث (بالإنجليزية: Inherentance)، ويمكنها أن تتعدد كائنيًا (بالإنجليزية: Polymorphism)، وأن تُقولب (بالإنجليزية: Typecasting) من وإلى أنواع مختلفة من البيانات، وغيرها من الخصائص التي سيتطرق لها لاحقًا.

كتابة كائن بسيط بالسي++[عدل]

كائن المستطيل[عدل]

#include <iostream>
using namespace std;
 
class rect {
   private:
      int height;
      int width;
   public:
      void set_values(int xHeight, int xWidth);
      int area();
};
 
void rect::set_values(int xHeight, int xWidth) {
   height = xHeight;
   width = xWidth;
}
 
int rect::area() {
   return (height * width);
}
 
int main() {
 
   rect myRect;
   myRect.set_values(4,5);
   cout<<"Area of myRect is: "<<myRect.area();<<".\n";
 
  return 0;
}


سيطبع هذه البرنامج على الشاشة: Area of myRect is: 20.

خصائص كائن المستطيل[عدل]

التصريح عن الكائن[عدل]

إن التصريح عن كائن جديد يتم ببساطة عن طريق كتابة class متبوعًا باسم الكائن على هذا النسق: ;{...} class ObjectName. ونحن هنا صرحنا عن الكائن الجديد بـ rect اختصارًا لـ "rectangle" والتي تعني مستطيل.

قيود الدخول[عدل]

عند تصميم كائن في السي++، فإن هنالك ثلاثة قيود: عام public ومحمي protected وخاص private. فأما العام، فيسمح لأي كود خارج الكائن بأن يدخل للعناصر الموجودة فيه، وأما المحمي والخاص فيمنعان أي كود خارج الكائن من الدخول للعناصر الوجودة فيهم، ولا فرق بينهما سوى أن الخاص لا تُورث عناصره.

كما في المثال السابق فإن العناصر تقد بالقيد الذي يعلوها؛ فالمتغيرين width و height من نوع عدد صحيح مقيدان بالقيد الخاص private، وأما الدالتان ()set_values و ()area فمقيدتان بالقيد العام public.

تعريف الدالات الكائنية[عدل]

من عادات المبرمج أن يفصل بين التصريح عن الدالات، خاصة ما إذا كانت كثيرة، وبين تعريفاتها لكي يكون الكود المصدري أكثر وضوحًا. نفس الحال يطبق هنا؛ فنحن صرحنا عن كلا الدالتين ()set_values و ()area داخل الكائن وهذا ولكن فصلنا تعريفاتهما وجعلناها خارج الكائن. عند تعريف دالة كائنية خارج الكائن فإننا نسبقها بـ :: مسبوقة بالكائن التي تعود له.

أنظر أيضاً[عدل]

Computer.svg هذه بذرة مقالة عن الحاسوب أو العاملين في هذا المجال تحتاج للنمو والتحسين، فساهم في إثرائها بالمشاركة في تحريرها.