السلام عليكم
الملف المرفق مثال بسيط على استخدام البرمجة الكائنية لصنع برامج C++ اتوقع انه ممكن اظهار الكود في اي compiler لكن الملفات هي من Visual C++ 6
ان شاء الله يعجبكم و اي سؤال عن الكود انا جاهز للاجابة :)
سلام
السلام عليكم
الملف المرفق مثال بسيط على استخدام البرمجة الكائنية لصنع برامج C++ اتوقع انه ممكن اظهار الكود في اي compiler لكن الملفات هي من Visual C++ 6
ان شاء الله يعجبكم و اي سؤال عن الكود انا جاهز للاجابة :)
سلام
راكان الحنيطي
Be Open Source

حياك الله أخوي راكان
وإن شاء الله راح اجرب الكود
وعطيك النتيجة
ومشكور على المثال
رائع، ولكن..
بما أنك نشرت الكود بشكل علني، ربما تود من أحدهم أن يعلق عليه :)
فقط لقطة واحدة:
CBox* pBox; // this is to show how you can also use pointers .... .... pBox = NULL; return 0;
هناك مفهوم مهم جدا وهو أنك عندما ساويت pBox بـ NULL فإنك قد ساويت الـ*متغير* فقط، ولكنك في الحقيقة لم تقم بتحرير الذاكرة الفعلية الموجودة في موقع الذاكرة pBox *....
ربما و أنك في سبيلك للخروج من البرنامج، فليست مشكلة، ولكن اذا اعتمدت دوما على المساواة بـ Null(0) فقط سيكون هناك memory leaks (تسريب في الذاكرة)...
المفترض دوما أن تلغي delete الـpointer ثم تساويه بـ0..
لية استخدمنا ال this poniter هنا
inline void AssignBreadthValue(double b)
{
this->m_Breadth = b;
}
inline void AssignHeightValue(double h)
{
this->m_Height = h;
}
inline void AssignLengthValue(double l)
{
this->m_Length = l;
}مع ان يمكن عمل نفس الشى بهذا الكود
inline void AssignBreadthValue(double b)
{
m_Breadth = b; //without 'this'
}
inline void AssignHeightValue(double h)
{
m_Height = h; //without 'this'
}
inline void AssignLengthValue(double l)
{
m_Length = l; //without 'this'
}و اعتقد ان هالكود هيئدى نفس العمل
لا اله الا الله .......................................... محمد رسول الله
السلام عليكم ,,
المؤشر this له ميزة في حال اذا كنا نريد أن نعدل على كائن ما في دالة عضو ثم نريد أن نجعل الدالة تعيد نفس هذا ال Object ,, يمكن فعل ذلك بانشاء Object مؤقت أيضا وتعيين قيمته للأصلي واعادة قيمته مع الدالة ,,
لم أطلع على الاكواد بعد ,, لكن يمكن أن ان تكون هناك فة قاعدة لهذه الفئة وبها نفس أسماء المتغيرات ,, فللتوضيح للمبتدئين نستخدم this أي نقصد المتغيرات الأصلية للفئة المشتقة وليست القاعدة ,,
للوصول لمتغيرات الفائت القاعدة ,, نستخدم عامل دقة المدى CBase::m_Height ,, أي m_height الخاصة بالفئة القاعدة ,,
في ال C++/CLI تمت اضافة كلمة أساسية جديدة أعتقد أنها موجودة أيضا في الجافا وهي super_ ,, وتستخدم للدلالهة على الفئة القاعدة فيكفي أن نكتب في المثال الأخير ,,
_super::m_height;
نعم بدون this ممكن ان نحقق نفس الشيء لكن للتوضيح اكثر و شكرا للاخوان على التعليق و بالنسبة الى تفريغ الpointer فقد كان في بالي كتابة
delete pBox;
لكني قد نسيت :P
تم تعديل هذه المشاركة بواسطة راكان الحنيطي في 22 أغسطس 2004 في 16:37
راكان الحنيطي
Be Open Source

اقتباسلم أطلع على الاكواد بعد ,, لكن يمكن أن ان تكون هناك فة قاعدة لهذه الفئة وبها نفس أسماء المتغيرات ,, فللتوضيح للمبتدئين نستخدم this أي نقصد المتغيرات الأصلية للفئة المشتقة وليست القاعدة ,,للوصول لمتغيرات الفائت القاعدة ,, نستخدم عامل دقة المدى CBase::m_Height ,, أي m_height الخاصة بالفئة القاعدة ,,
للاسف لم افهم ما تقول حيث
اننى قريت و فهمت موضوع ال classes كلة بالانجليزى فيرت التوضيح :">
لا اله الا الله .......................................... محمد رسول الله
هذا الموضوع مغلق.