أيمن العرباوى


عزيزي الزائر / عزيزتي الزائرة يرجي التكرم بتسجبل الدخول اذا كنت عضو معنا
او التسجيل ان لم تكن عضو وترغب في الانضمام الي اسرة المنتدي
سنتشرف بتسجيلك
شكرا
ادارة المنتدي

أيمن العرباوى

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

إرسال موضوع جديد   إرسال مساهمة في موضوع
شاطر | 
 

 مفهوم الكلاس Class

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل 
كاتب الموضوعرسالة
Admin
الزعيم "صاحب المنتدى"
الزعيم
avatar

رقم لعضوية : 1
احترام قوانين المنتدى : 100%

نقاط : 36020

مُساهمةموضوع: مفهوم الكلاس Class   الخميس 7 فبراير 2013 - 18:38

مفهوم الكلاس Class :




لإنشاء الكائنات في لغة سي بلس بلس نستخدم نوعا جديدا من أنواع البيانات يسمى بالكلاس class



و هذه الكلمة class ترجمتها بالعربية (الطبقة) و في بعض المصادر تترجم بـ(الفئة) - أو (التصنيف) في مصادر أخرى ، و قد فضلت هنا استخدام الكلمة نفسها (الكلاس) لعل هذا يكون أسهل و أوضح.




بعد إنشاء الكلاس - كما سنرى بعدقليل - يمكننا عمل عدد غير محدود من الكائنات - حسب الحاجة - من هذا الكلاس فالكلاس هو نوع بيانات جديد ..




لتوضيح الفكرة :



إذا كنت أريد الإعلان عن متغير اسمه SomeVariable من النوع integer فإن ذلك يتم كالتالي :




كود:
int SomeVariable;





و كذلك بنفس الطريقة نقوم بالاعلان عن الكائنات ، فمثلا إذا كان لدي كلاس اسمه Person و أردت الاعلان عن كائن :




كود:
Person Ali;





فـ Ali هو كائن من كائنات الكلاس Person



قصدي مما ذكرت أن الكلاس هو نوع بيانات جديد يحتوي على البيانات (متغيرات) و عملياتها (دوال) معا و كل كائن يحتوى داخله على هذه البيانات و على عملياتها .



بطريقة أخرى الكلاس هو مثل المخطط الذي يوضح طريقة بناء مبنىً ما أما الكائن فهو المبنى نفسه و الذي بُني حسب المخطط.




إذن كيف يمكن الإعلان عن الكلاس و مم يتركب ؟




الجواب:



طريقة الإعلان عن الكلاس تشبه السجل structure حيث أن السجل يحتوي داخله متغيرات تسمى حقول أو أعضاء كما في المثال :



كود:
struct Person { char name[30]; char address[30]; int ID; //...; }Person;




أعلنا هنا عن سجل إسمه Person يحتوي داخله على مجموعة من المتغيرات (الحقول) ... أما الكلاس فهو يحتوي على متغيرات تسمى عناصربيانات بالإضافة إلى الدوال التي تعمل على هذه المتغيرات و تسمى بالدوال الأعضاء - مع ملاحظة أن بعض الكلاسات تحتوي على متغيرات فقط - وللإعلان عن الكلاس نستخدم الكلمة المحجوزة class ثم اسم الكلاس و هذا يسمى بالرأس، ثم بقية المتن وتكون بين قوسين { }



(مثال 1): الإعلان عن كلاس اسمه Person لإدخال بيانات أشخاص و عناوينهم مع رقم فريد لكل شخص:



كود:
1. class Person{ 2. int ID; 3. char address[30]; 4. char name[30]; 5. public: 6. void EnterData(void); 7. void PrintData(void); 8.};




ملاحظة : الأرقام في المثال أعلاه - و كل الأمثلة التالية - هي للتوضيح في التحليل التالي و ليس من صلب الكود.



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





تحليل:



1. هذا رأس الكلاس و فيه استخدمنا الكلمة المحجوزة class ثم اسم الكلاس Person
و يشترط في تسمية الكلاس نفس الشروط المطلوبة عند تسمية المتغيرات في لغة
سي بلس بلس مع مراعاة أن الأسماء ذات المعاني لها أهمية كبيرة و خاصة في
البرامج الكبيرة التي تكثر بها الكائنات و المتغيرات.

2. ~ 4. هذه عناصر البيانات و هي متغيرات يقوم المبرمج بتعريفها حسب الهدف من إنشاء الكلاس .
5. الكلمة المحجوزة public: هذه الكلمة مهمة جدا و هي ضمن ثلاث كلمات محجوزة تميز الكلاس عن السجل:




Private:
أي
خاص و هذه الكلمة تفيد المترجم بأن كل ما يليها من الأعضاء (متغيرات أو
دوال) محمي من الوصول إليه من خارج الكلاس – و سيأتي مزيد بيان عند الكلام
عن مفهوم الكبسلة بحول الله - .





Protected:
أي
محمي و ذلك يعني أن ما يليها من الأعضاء (متغيرات أو دوال ) محمي من
الوصول من خارج الكلاس و لكن يمكن الوصول إليها عن طريق الكلاسات المشتقة –
كما سيأتي عند الكلام عن التوريث ( الوراثة) - .





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

أعضاء
السجل تكون عامة بحيث يمكن الوصول إليها مباشرة بعكس الكلاس فالوضع
الافتراضي لعناصره أنها خاصة أي لا يمكن الوصول إليها من خارج الكلاس إلا
بوضعها تحت الكلمة
public: ، و لذلك - في هذا المثال - كل ما قبل public
فهو إفتراضيا خاص لا يمكن الوصول إليه إلا عن طريق الدالتين الموضوعتين في
القسم العام ، و بالتالي إذا جربت السطر التالي – في الدالة
main – لن يقبله منك المترجم :



كود:
Ali.ID=1;

- حيث Ali هو كائن من كائنات الكلاس Person – فعندم الترجمة سيعطيك المترجم رسالة خطأ شبيهة بالتالي:




Error: PersonExample.cpp(136,16):'Person::ID' is not accessible

مما يعني أنه لا يمكن الوصول لهذا العضو ( المتغير ) مباشرة إلا عن طريق الدوال المحددة لذلك .

هذه خاصية مهمة جدا توفر الحماية لبيانات الكائن من أن يتم تعديلها من الخارج بطريقة غير مقصودة و هذه من خواص الـOOP المهمة.

و قد يقول قائل : ما دام أن الأعضاء يكونون على الوضع خاص تلقائيا فلماذا نستخدم الكلمة المحجوزة private: ؟ الجواب : من الأفكار الجيدة أن تستخدم الكلمة private: لتوضيح مدى الأعضاء (متغيرات أو دوال ) و ذلك لتجنب جعل الأعضاء الخاصة عامة بدون قصد و لذلك من الأفضل أن يكون مثالنا كالتالي:



كود:
class Person{ private: int ID; char address[30]; char name[30]; public: void EnterData(void); void PrintData(void); };


مع ملاحظة أن الترتيب ليس شرطا في صحة تعريف (الإعلان عن) الكلاس بحيث يمكن أن نعلن عن الكلاس السابق كالتالي:
كود:
class Person{ public: void EnterData(void); void PrintData(void); private: int ID; char address[30]; char name[30]; };




فكما تلاحظ تم وضع الدوال في القسم العام أولا و في هذه الحالة سيظل مفعول كلمة public: ساريا إلى نهاية الكلاس أو حتى استخدام كلمة أخرى تبطل مفعولها لذلك استخدمنا الكلمة private: قبل الأعضاء الذين نريد إخفاءهم.




6. هذا السطر يحوي رأس دالة عضو (member function) و تسمى أيضا بالطُرق أو العمليات (methods or operations ) و هذه الدالة و التي تليها ستكونان الواجهة التي سنتعامل بها مع بيانات الكلاس (الكائن) لذلك تم وضعها في القسم العام.



هذه الدالة هي التي ستقوم بإدخال البيانات لذلك سميناها EnterData و هي لا تعيد قيمة ، أو بالأصح تعيد قيمة من النوع void (لا شيء) كما أننا لا نمرر لها أي متغيرات.




7. هذا السطر كذلك يحوي رأس دالة عضو أخرى تقوم بعرض البيانات التي تم إدخالها و سميناها لذلك PrintData و هي كذلك تعيد قيمة من النوع void كما أنها لا تستقبل أي متغيرات (وسائط ) من الخارج.

AA

اختر توقعيك من هنا

Ayman Elarabaway
[size=10][/size]
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
 
مفهوم الكلاس Class
استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1
 مواضيع مماثلة
-
» كل مايتعلق باجهزة digiclass وsamsat و الاشباه كل شيء هنا

صلاحيات هذا المنتدى:تستطيع الرد على المواضيع في هذا المنتدى
أيمن العرباوى  :: المنتديات العامة :: خاص بطلبات الزوار :: مساعدة اعضاء جوجل اجابات-
إرسال موضوع جديد   إرسال مساهمة في موضوعانتقل الى: