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

سؤال حول البرمجة الكائنبة التوجة

بدأه 3ds max2010 في 29 يوليو 2010 · 3 رد · 544 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لدي سؤال:

أنا لدي برنامج بنيته على البرمجة الكائنية التوجه بلغة c++ و عمله كالتالي:

الفئة الأولى :

class point
{
int x, y;
public:
point(){ x=1, y=5}
int getx(){return x;}
int gety(){return y;}
void inc_x(int a){ x =x +a;}
};

أما الفئة الثانية:

class pointcol : public point
{
int x, y;
public:
void affiche
{
x = getx();
y = gety();
printf("%d  %d", x,y);
}
};

و الدالة الأم:

void main
{
pointcol pcol;
point p;
pcol.affiche();
p.inc_x(1);
pcol.affiche();

ففي الدالة الأم حينما أقوم بإستدعاء الدالة inc_x و أمرر لها القيمة 1 أملا أن أزيد من قيمة x من فئة point فإنه لا يمكنني الوصول لها عن طريق إستدعاء الدالة getx في الفئة pointcol

فالناتج الذي أريده هو :

1  5
2  5

أما ناتج هذه البريمج فيظهر:

1  5
1  5

كيف أستطيع التغيير في قيمتا x و y لأستعملهما في فئة أخرى؟

تخيل, هل سيكون مستقبل الأوبن جي أل مع البشرية هكذا

future.jpg
#2

عندما نفذت :

p.inc_x(1);

فإن الزيادة كانت من نصيب العنصر p

و ليس للعنصر للكلاس الموروث منه

إذا كنت أن تريد أن تورث x ,y يجب أن يكونا protected و ليس private

إذا أردت أن يكون نفس الخرج اللي عندك فبعد الزيادة بـ1

أضف

cout<<p.getx()<<p.gety()
#3

الكود الذى كتبته خاطئ و ذلك لأنك انشئت نسخه من الفئه point و الصحيح هو ان تقوم بعمل up cast من الفئه pointcol إلى الفئه point، أنظر الكود التالى:

#include <stdio.h>

class point
{
protected:
	int x, y;

public:
	point(){ x=1, y=5;}
	int getx(){return x;}
	int gety(){return y;}
	void inc_x(int a){ x =x +a;}
};

class pointcol : public point
{
public:
	void affiche()
	{ printf("%d  %d\n", x, y); }
};

int main()
{
	pointcol pcol;

	point* p = dynamic_cast<point*>(&pcol); // point* p = (point*)&pcol; // point* p = &pcol;
	pcol.affiche();
	p->inc_x(1);
	pcol.affiche();
	getchar();
}

و الله ولي التوفيق

مدونتي: C++ Tips and Tricks

#4

شكرا جزبلا لكما

تخيل, هل سيكون مستقبل الأوبن جي أل مع البشرية هكذا

future.jpg

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