ahmed.o.mohamed

اختبر قدراتك في C/CPP - الحلقة الرابعة, الجزء العشرون و الأخير

5 ردود في هذا الموضوع

السلام عليكم

الحلقة الأولى.

الحلقة الثانية - الجزء الأول.

الحلقة الثانية - الجزء الثاني.

الحلقة الثانية - الجزء الثالث.

الحلقة الثانية - الجزء الرابع.

الحلقة الثانية - الجزء الخامس.

الحلقة الثانية - الجزء السادس و الأخير.

الحلقة الثالثة - الجزء الأول.

الحلقة الثالثة - الجزء الثاني.

الحلقة الثالثة - الجزء الثالث.

الحلقة الثالثة - الجزء الرابع.

الحلقة الثالثة - الجزء الخامس و الأخير.

الحلقة الرابعة - الجزء الأول.

الحلقة الرابعة - الجزء الثاني.

الحلقة الرابعة - الجزء الثالث.

الحلقة الرابعة - الجزء الرابع.

الحلقة الرابعة - الجزء الخامس.

الحلقة الرابعة - الجزء السادس.

الحلقة الرابعة - الجزء السابع.

الحلقة الرابعة - الجزء الثامن.

الحلقة الرابعة - الجزء التاسع.

الحلقة الرابعة - الجزء العاشر.

الحلقة الرابعة - الجزء الحادي عشر.

الحلقة الرابعة - الجزء الثاني عشر.

الحلقة الرابعة - الجزء الثالث عشر.

الحلقة الرابعة - الجزء الرابع عشر.

الحلقة الرابعة - الجزء الخامس عشر.

الحلقة الرابعة - الجزء السادس عشر.

الحلقة الرابعة - الجزء السابع عشر.

الحلقة الرابعة - الجزء الثامن عشر.

الحلقة الرابعة - الجزء التاسع عشر.

مرحبا بكم إخوتي الكرام في الجزء العشرين و الأخير من الحلقة الرابعة من سلسلة اختبر قدراتك, قمتُ بتقسيم الحلقة الرابعة إلى عدة أجزاء, مُرتبة حسب الصعوبة.

أجزاء هذه الحلقة ستكون خاصة بمسائل الــ OOP.

الإختبار الرابع (الجزء العشرون) :

ليكن لدينا الــ Template Classe التالي :

template <class T> class point {
T x, y; // coordonnees
public:

point(T abs, T ord) {
x = abs;
y = ord;
}

void affiche() {
cout << "Coordonnees : " << x << " " << y << endl;
}
};

المطلوب هو كتابة فئة جديدة باسم Cercle تسمح بالتعامل مع الدوائر, كل دائرة مُعرفة بمركز (عبارة عن نقطة) و شعاع.

الفئة الجديدة تملك دالة بناء و دالة عضو باسم affiche حيث تسمح بإظهار إحداثيات المركز بالإضافة إلى قيمة الشعاع.

اكتب الفئة :

  1. باستخدام مفهوم الوراثة (الدائرة عبارة عن نقطة تملك شعاع).
  2. باستخدام مفهوم الــ Object composition (الدائرة تملك مركز و شعاع).

سأضع حل السؤال بعد إنتهاء عرض المحاولات.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
باستخدام مفهوم الوراثة (الدائرة عبارة عن نقطة تملك شعاع).

لكن هذا يعني أنه يجب تغيير class الأب ..لن x,y private ...ويجب أن تكون public أو protected حتى نستفيد من الوراثة ...سأقوم يتغييرها إلى protected لأحل السؤال..

______________________________________حل السؤال الأول__________________________________

#include<iostream>
using namespace std;
template <class T> class point
{
protected:
T x, y; // coordonnees
public:

point(T abs, T ord) {
x = abs;
y = ord;
}

void affiche() {
cout << "Coordonnees : " << x << " " << y << endl;
}
};
template <class T> class Cercle:public point <T>
{
T r;
public:
Cercle(T abs,T ord,T vector):point<T>(abs,ord)
{
r=vector;
}
void affiche() {
cout << "Coordonnees : " << x << " " << y <<"\tRadius Is "<< r<< endl;
}
};
void main()
{
Cercle<int >m(1,1,1);
m.affiche();
}

______________________________________________________________________

تم تعديل بواسطه مصطفى 36a2
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

___________________________حل السؤال الثاني _______________________

لا داعي لتغيير أي شيء في الأب إذا حللنا بهذه الطريقة ...

#include<iostream>
using namespace std;
template <class T> class point
{
T x, y; // coordonnees
public:

point(T abs, T ord) {
x = abs;
y = ord;
}

void affiche() {
cout << "Coordonnees : " << x << " " << y << endl;
}
};
template <class T> class Cercle
{
point <T>*p;
T r;

public:
Cercle(T abs,T ord,T vector)
{
p=new point<T>(abs,ord);
r=vector;
}
void affiche() {
p->affiche();
cout<<"Radius Is "<< r<< endl;
}
};
void main()
{
Cercle<int >m(1,1,1);
m.affiche();
}

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

1. :

template <class T, class U> class cercle : public point<T> {
U r; // rayon
public:

cercle(T abs, T ord, U ray) : point<T> (abs, ord) {
r = ray;
}

void affiche() {
point<T>::affiche();
cout << " rayon : " << r;
}
};

2. :

template <class T, class U> class cercle {
point<T> c; // centre
U r; // rayon
public:

cercle(T abs, T ord, U ray) : c(abs, ord) // pourrait r(ray)
{
r = ray;
}

void affiche() {
c.affiche();
cout << " rayon : " << r;
}
};

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

تم منح النقاط للمشاركات المفيدة.

يُغلق.

أراكم في الجزء الأول من الحلقة الخامسة.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .