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

شرح لل Class

رائج
بدأه شعاع الأمل في 18 مارس 2008 · 52 رد · 31,204 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

أخواني وأخواتي الأعزاء

أنا مبتدئه في البرمجه وأدرس الأن لغة السي بلس بلس

لكنني تعثرت في مشكله الكلاس مع أن الكثير يقولون أنه سهل إلا أنني لم أفهمه وأرتبك وأخاف عندما أرى أي سؤال فيه ... ربما لأن الكثير من صديقاتي يعانون من نفس المشكله ويهولون الأمر

أخذنا في الكلاس القيت والسيت والكونستراكتر

كانت ومازالت المشكله في جامعتنا هو أنهم يشرحون لكن لا يطبقون معنا كتابة أي برنامج بل نكتبه ولأول مرره بأنفسنا

فأتمنى أن يساعدني أحد بالشرح وأن يعطيني افكارا واسئله وواجبات حتى افهم اكثر واكون واثقه اكثر

في انتظار مساعدتكم على أحر من الجمر

#2

/index.php?showtopic=151459

تفضلي اختي

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#3

أختي العزيزة شعاع الأمل..لا تحاولي تاخذي المفهوم تبع الأصناف classes بشكل تقني بحت..بالإضافة إلى الرابط اللي مقدمه اخي الكريم Time1..حاولي تخلي المفهوم اكثر بديهية.. من الكون ومن كل شي حولك هو مفهوم الأصناف ومفهوم البرمجة الكائنية Object-oriented Programming..

============

الصنف Class هو عبارة عن مخطط أوليّ او تقدري تسميه وصف لتلك الكائنات Objects اللي رايحة تنسخيهن من هذا الصنف لاحقاً. شوفي كل الأشياء من حولك.. رايحة تلاحظي بأنها كائنات لها خصائص Properties وأساليب Methods فقط لا غير. لحد الآن ابعدي مخيلتك عن الأسماء والمصطلحات التقنية اللي بتخوفنا بالمنهج الأكاديمي...

---------------

قليلاً علشان تستوعبي الفكرة:

خذي على سبيل المثال القلم Pen له خاصية اللون وحجم الخط وما إذا لو كان حبر او جاف و و و..هذي كلها خصائص القلم..وبالبرمجة نستخدم المتغيرات داخل الصنف class لعمل ومحاكاة مثل هذي الخصائص..وأيضاً للقلم أسلوب وهو الكتابة .. لاحظي دائما الخصائص صفات والأساليب افعال. شوفي مثال سريع بلغة ++C على القلم وكيفية تمثيله بواسطة كلاس

======

[...]
class Pen
{
   public:
	  Pen(Color c, double width); //The Constructor...
	  void setColor(Color c);
	  void setWidth(double width);
	  void write();
	  ~Pen();   //The Destructor...
   private:
	  Color penColor;
	  double penWidth;
};
[...]

======

لاحظي في القسم العام public من الصنف Pen هو المُشيد The constuctor تبع هذا الصنف نستخدمه لما بنجي نعمل نسخة لكائن Object من هذا الصنف..

لاحظي الأسلوب setColor(...) و الثاني اللي يليه setWidth(...) رح نستعملهن لو كنا بنريد تغير لون الخط او الحجم للريشة تبعت القلم..و الأسلوب الأخير write() هو اللي رح يقوم بعملية الكتابة.. أما بالنسبة للأسلوب الأخير ~Pen() هو الهادم The Destructor اللي رح ينده عليه النظام لتدمير وهدم مساحة هذا الكائن في الذاكرة بعد الإنتهاء منه عند تنفيذ البرنامج...

شوفي كيف نعمل نسخة لكائن Object هذا القلم..

[...]
//ننشيء قلمين (كائنين) من الصنف الرئيسي القلم اللي عملناه فوق
Pen pen1(Red, 1.0);
Pen pen2(Blue, 2.3);

pen1.wirte(); //Call write() to write something using the pen1.
pen2.write(); //.................................................the pen2.

// نغير لون الأول والثاني
pen1.setColor(Yellow);
pen2.setColor(Pink);
//وهكذا...
[...]

المفهوم بسيط جداً اختي وبديهي ومحيط بنا من كل مكان..مني لايمتك اختي :wacko: .. انا كمان مارة بنفس المشاكل سابقاً لحد ما فهمت المفهوم بشكل طبيعي ومن الواقع :happy:

=======

اطيب المُنى

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#4

بسم الله الرحمن الرحيم

===========

السلام عليكم مجدداً اخوتنا الكرام..مرحبتين اختي شعاع الأمل .. آسفة مكان المفروض تكوني مضطرة لرسالة لأن سؤالك ايضاً كان حول ما يُعرف بـ setter و getter وهي تلك الأساليب Methods التي نكتبها في الصنف من أجل تعيين قيمة او جلب وقراءة قيمة خاصة Private Data Members..

===========

طالعي لشاشة التلفزيون عندك بالحجرة..رايحة تشوفي زرارات كثيرة متعلقة بالتشغيل, بالصوت والقنوات و درجة التحكم باللون و و و..اعتبري التلفزيون الآن صنف class عملته شركة تجارية. هذي الإزرارات هي عبارة عن setter و getter تمكنا نحنا كمستخدمين للتلفزيون من قراءة بعض القيم وتعين بعض القيم بدون التدخل او الإهتمام بالتفاصيل الداخلية للتلفزيون. وهذا بالضبط وظيفة الأساليب التي من نوع getter و setter..نعملهن مشان المستخدم للصنف تبعنا ما يهتم بالتفاصيل الداخلية وبالتالي يعيّن و يقرأ القيم اللازمة..

-------

هذا الفهوم اختي: وهو حماية البيانات الخاصة من التحكم فيها مباشرة تُسمى تقنياً بـ تغليف البيانات Data Encapsulation

يا رب يكون المفهوم واضح اكثر اختي :happy:

===========

يلله تعالي نطبق المفهوم للتلفزيون.. نعيين قيمة للصوت و درجة الوضوح بواسطة setter ونقرأ ونعرف قيمهن بواسطة getter.

[...]
class Tv
{
   public:
	  Tv(int s, double b)
	  {
		 sound = s;
		 brightness = b;
	  }
   void setSound(int s)
   {
	   //تضعي هنا شرط لحماية درجة الصوت يعني لا يزيد عن 100 مثلاً ولا يقل عن 0
		sound = s;
   }
   int getSound()
   {
	   return sound;
   }
   void setBrightness(double b)
   {
	  //تضعي هنا شرط بحيث لا يزيد درجة الوضوح عن 100.0 ولا ينقص عن 0.0
	  brightness = b;
   }
   double getBrightness()
   {
	  return brightness;
   }
   private:
	  int sound;
	  double brightness;
};
[...]

راقبي الشيفرة تماماً اي شيء يبدأ بكلمة set انا قاصدة منه بالأسلوب setter الذي يقوم بتعيين قيمة ضمن تحقق شرط مناسب..واي شيء يبدأ بـ get يعتبر بمحل اسلوب لجلب وقراءة القيمة المطلوبة getter. :)

=======

الآن تعالي نشوف شو يعني الحماية بواسطة تقنية setter و getter..من الشيفرة التالية

[...]

//ننشيء تلفزيون زغير .^_^. و نرفع صوته لحدة 20 و درجة وضوحه لحدة 70 كقيم استهلالية
Tv tv(20, 70);
//الصوت واطي؟؟ إذاً شو رايك نرفع الصوت بواسطة setSound
tv.setSound(40);
// الآن نشوف قمية الصوت شو بالضبط بواسطة getSound.
int s = tv.getSound();
cout << s << endl;
//----------

//لو كان درجة الوضوح بتجهر بالعين شوي ممكن نخليها 50.5بواسطة setBrightness
tv.setBrightness(50.5);
// وهكذا اختي العزيزة .^_^.
[...]

لاحظي بأننا بدون setSound و getSound ممكن يكون خلل بأمن البيانات..على سبيل المثال لو تركنا الخصائص السابقة sound و birghtness مكشوفين بالعام public!! :happy: ممكن اي ولد زغير يستخدم الشيفرة ويلعب فيهن كالتالي

tv.sound = 1000

شو الصوت 1000 رح يشتكوا الجيران :o

علشان كذا عملنا الأسلوب setSound ووضعنا بعض الشروط (خيالية هنا بالدرس) علشان محدا يرفع الصوت اكثر من 100 او اقل من 0..وعلشان كذا كمان جعلنا تلك الخصائص بالقسم الخاص private والتحكم بيهن ضمن شروطنا وضمن مواصفاتنا

:happy:

=========

آسفة اختي لو كنت مقصرة بالشرح...واياك تترددي عن الأسئلة هنا..نحنا بمنتدى علمي وهذا واجبنا دينياً كلنا من إدارة لحدة عضو (مشاركة 1) التفاعل مع الأسئلة والإجابة عنها بحسب المعرفة والإستطاعة :) ..والمزح شوي مو مشكلة :happy:

=========

أطيب المُنى

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#5

بالإضافة اختي الكريمة هنا محاضرات لمشرفنا الأخ BjarenStudent...اطلعي عليهن يمكن تستفيدي اكثر بمواضيع ثانية او مواضيع ذات صلة..الرابط التالي المحاضرة الأولى

/index.ph...2&hl=محاضرة

ايضاً بإمكانك استخدام محرك البحث الخاص بالمنتدى..تشوفيه تحت بآخر الصفحة الخاصة بالقسم..وابحثي اكثر عن المُشيدات Constuctors و و و..لأني فاكرة هناك مواضيع واضحة وجلية بالمنتدى بخصوصهن

========

تمنياتي لكم... :happy:

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#6

ايضاً اختي الكريمة..من شوي شايفة موضوع تحليلي لفكرة البرمجة الكائنية للأستاذ المراقب HGB على الرابط التالي:

/index.ph...st&p=174874

---------

لا تهتمي اختي بخصوص المصطلحات وتعارضهن من موضوع لآخر..المنتدى لا يزال يحاول توحيد المصطلحات..يعني مثلا بالدرس تبع الأستاذ HGB يسمي OOP بالبرمجة كائنية المنحى..والبعض مثلنا يقول برمجة كائنية,,وهناك البرمجة الشيئية وكلهن قريبات من المعنى...أطيب المُنى

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#7

أخــي time

أختي رغد........

حق لا أعرف كيف أشكركم.........

غاليتي شرحك من أروع مايكون سدد الله خطاك واسعدك........

#8

السلام عليكم........

خطر ببالي سؤال.........

متى ولم أستخدم ال gatline

أرجوا إيضاح الإجابه بمثال وفقكم الله.........

#9

السلام عليكم

======

لسه شايفة مشاركتك هذي..العفو اختي الكريمة شعاع وانتي الأروع :happy:

======

قبل ما تعرفي شو يعني getline..انا متوقعة بأنك مارة على الكائن cout الخاص بطباعة البيانات على الشاشة..وايضاً الكائن cin اللي بياخد بيانات من المستخدم للبرنامج عن طريق لوح المفاتيح..ما هيك؟؟ :happy:

---------

خلينا نشوف الشيفرة التالية شو بتعمل؟؟

#include <iostream>
using namespace std;

int main()
{
   char name[80]; //هذا مجرد مصفوفة حرفية رايحة تحتوي على اسم المستخدم للبرنامج
   cout << "Enter your name: ";
   cin >> name; // الآن اسم المستخدم رح يتخزن بالمصفوفة اللي عاملتا فوق
   cout << "Your name is: " << name << endl; //طباعة الأسم المستخدم مرة ثانية للشاشة
   return 0; // هنا بينتهي البرنامج
}

لما تشغلي البرنامج السابق رح يطلبنا الأسم علشان ندخله..خلص اكتبي Raghad واضغطي enter رح ياخذ اسم رغد ويطبعه من جديد كالتالي:

CONSOLE

Enter your name: Raghad

Your name is: Raghad

Press any key to continue...

الآن جربي واكتب Raghad A.A: لاحظي بأني كتبتي اسمي وعملتي مسافة وكتبتي حروف اخرى

CONSOLE

Enter your name: Raghad A.A

Your name is: Raghad

Press any key to continue...

يا ترى لش طبع رغد بس؟؟ بالرغم المصفوفة تستوعب ثمانين حرف تقريباً؟؟

السبب:

لأن الكائن cin ما بياخذ شيء بعد السلسلة الحرفية المترابطة الأولى مثل Raghad في هذا المثال..واعتبر بأن السلسة انتهت عند حرف d لوجود مسافة فارغة بعد السلسلة.

---------

الآن نعرف شو يعني getline..وهي عبارة عن دالة تابعة للكائن cin تقوم بتخزين كامل السطر line إلى name على سبيل المثال:

جربي البرنامج التالي وشوفي كيف بيحل المشكلة السابقة:

#include <iostream>
using namespace std;

int main()
{
   char name[80]; //هذا مجرد مصفوفة حرفية رايحة تحتوي على اسم المستخدم للبرنامج
   cout << "Enter your name: ";
   cin.getline(name, 80); // حل للمشكلة السابقة..الآن ممكن ناخذ سطر كامل من 80 حرف ومسافات ونخزنهن بـالمصفوفة
   cout << "Your name is: " << name << endl; //طباعة الأسم المستخدم مرة ثانية للشاشة
   return 0; // هنا بينتهي البرنامج
}

----------

الآن جربي المثال كالتالي:

CONSOLE

Enter your name: Raghad A.A

Your name is: Raghad A.A

Press any key to continue...

مش المهم بأنه طبع كامل السطر..المهم أن cin.getline اخذ كامل السطر وخزنه بالمصفوفة name.

----------

يا ريت الشرح يكون واضح اختي :happy: آسفة للتأخير

=========

أطيب المُنى

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#10

وعليكم السلام........

يعني getline وظيفتها إنها ممكن تدخل أكثر من كلمه........

طيب أختي مافهمت [80] اللي أنتي كاتبتها في وهل ممكن ما أكتبها وماهي الفائده منها؟؟؟

جزاك الله خيررر..........

#11
اقتباس
يعني getline وظيفتها إنها ممكن تدخل أكثر من كلمه........

نعم اختي بالضبط..اكثر من كلمة مباعد بيناتهن بالمسافات الفارغة

-----------

اقتباس
طيب أختي مافهمت [80] اللي أنتي كاتبتها في وهل ممكن ما أكتبها وماهي الفائده منها؟؟؟

لو تقصدي

LEFT TO RIGHT
name[80]؟

هذي المصفوفة حاطتا علشان تستوعب 80 حرف تقريباً..والمصفوفات لازم تعيني حجمهن عند انشائهن..ممكن تراجعي اي درس بخصوص المصفوفات لأنه موضوع واسع شوي.. :happy:

أما لو كنتي تقصدي الـ 80 الموجودة بأقواس الوسائط كالتالي:

LEFT TO RIGHT
cin.getline(name, 80);

الدالة تطلبها لتحديد عدد الحروف الممكن استيعابها داخل المصفوفة..خلي بالك اختي المسافة الفارغة تعتبر حرف هنا.

اطيب المُنى

تم تعديل هذه المشاركة بواسطة رغـــــــــد في 30 مارس 2008 في 10:48

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#12

اهاااااااااااا فهمت......

طيب المصفوفه ممكن أي عدد أكتبه تستوعبه!! يعني مالها نهايه؟؟

#13
شعاع الأمل كتب:
اهاااااااااااا فهمت......

طيب المصفوفه ممكن أي عدد أكتبه تستوعبه!! يعني مالها نهايه؟؟

تجاهلي الفقرة التالية:

اخت شعاع..ان شاء الله تكوني بخير؟؟ :happy:

ببداية سؤالك ما شاء الله عن مواضيع متقدمة

OOP و setter and getter and encapsulation وماني عارفة شو؟؟ :wacko:

ومن أمس تقريباً بتسألي اسألة ابتدائية() getline حجم المصفوفة وماني عارفة شو؟؟ :wacko:

مافي مشاكل ابداً..لكن انا حساسة شوي بخصوص التراكمية و التسلسل و المنطق:happy:

----------

الإجابة على سؤالك:

اكيد عارفة شو يعني Data Type..حجم المصفوفة بيعتمد عليها مثلاً..هذا يعني بيعتمد على النظام تبع الذاكرة..مثلاً مصفوفة من نوع char بتحمل نفس الترتيب The range الخاص بهذا النوع ومصفوفة من نوع short int بتحمل نفس الترتيب The range الخاص بها و هكذا... بالطبع الترتيب العددي لأنواع البيانات والجداول العددية لكل نوع موجودة بكتبك او مذكراتك اختي شعاع

:)

=====

اطيب المُنى

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#14

هلا فيك أختي رغد.........

أنا الحمد لله بخير..........

أنا اللي أعرفه إنه إذا كان عندي float فإنه راح ياخذ سبع منازل مابعد الفاصله...

أما إذا كان double راح يتخذ 15 منزله بعد الفاصله.....

لكن إذا كان char فكم ممكن ياخذ في الميموري؟؟؟

معليش اختي رغد أحيانا نتعلم الأشياء المعقده والكبيره لكن للأسف أخطاؤنا تكون في أتفه الأشياء لذلك أبغى أكون دقيقه ومقتنعه في كل نقطه بالبرنامج:)

#15

يا أختي, ال Char بحجز حرف, إذا كن بدك تعملى جملة, عرفي مصفوفة من النوع Char

char array[]={"hello world"};

Chao!!!

Great place, and people, but full of sectarianism.

#16

ما تشيلي هم اختي شعاع بجد سعيدة بأسئلتك اياك تشوفيها تذمر او شيء

==========

بخصوص السؤال:

الحجم تبع المصفوفة ديماً عدد صحيح Integer Number خلص حتى للمصفوفات اللي من نوع float و double الكمبايلر يعامل الحجم معاملة الأعداد الصحيحة..لأني شايفة انتي قاصدة الحجم مش العناصر نفسا..وانتي أكيد عرفانة بأن الذاكرة وعنوانيها أعداد صحيحة كمان :happy:

========

اطيب المُنى اختي

تم تعديل هذه المشاركة بواسطة رغـــــــــد في 30 مارس 2008 في 16:17

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#17

السلام عليكم........

#include <iostream>

using std::cout;

using std::cin;

using std::endl;

#include <string>

using std::string;

using std::getline;

class HotelRoom

{

public:

HotelRoom(int Room,int Floor, string Tp, int Status)

{

setRoom_Number(Room);

setFloor_Number(Floor);

setType(Tp);

setRoom_Status(Status);

}

void setRoom_Number(int RN)

{

Room_Number=RN;

}

void setFloor_Number(int FN)

{

Floor_Number=FN;

}

void setType(string Ty)

{

Type=Ty;

}

void setRoom_Status(int RS)

{

Room_Status=RS;

}

int getRoom_Number()

{

return Room_Number;

}

int getFloor_Number()

{

return Floor_Number;

}

string getType()

{

return Type;

}

int getRoom_Status()

{

return Room_Status;

}

void ShowRoomInfo()

{

cout<<"The Room No. is: "<<getRoom_Number()<< " and the Floor No. is: "<<getFloor_Number()<<" and the type is: "<<getType<<endl;

}

void CheckRoomStatus()

{

if (getRoom_Status()==1)

cout<<"The Room status is booked"<<endl;

else

cout<<"The Room status is not booked"<<endl;

}

void show_status()

{

if (getRoom_Status()==1)

cout<<"The room is:"<<(char)66<<endl;

else if (getRoom_Status()==0)

cout<<"The room is:"<<(char)78<<endl;

}

private:

int Room_Number, Floor_Number, Room_Status;

string Type;

};

int main()

{

int R, F, S;

string T;

HotelRoom Room1002(1,1,"Single", 0);

cout<<"Please, enter room no:";

cin>>R;

cout<<"Please, enter floor no:";

cin>> F;

cout<<"Please, enter type:";

cin>> T;

cout<<"Please, enter status:";

cin>> S;

cout<<endl;

Room1002.setRoom_Number®;

Room1002.setFloor_Number(F);

Room1002.setType(T);

Room1002.setRoom_Status(S);

Room1002.ShowRoomInfo();

Room1002.CheckRoomStatus();

Room1002.show_status();

return 0;

}

هذا الكود كيف أقسمه لملفين؟؟ ولثلاث ملفات؟؟

#18

ضعي كود الكلاس في ملف مستقل و لنفرض إسمه myclass.h ثم كود برنامج وحده ليصبح الناتج كالآتي :

كود myclass.h :

class HotelRoom
{
public:
HotelRoom(int Room,int Floor, string Tp, int Status)
{
setRoom_Number(Room);
setFloor_Number(Floor);
setType(Tp);
setRoom_Status(Status);
}

void setRoom_Number(int RN)
{
Room_Number=RN;
}

void setFloor_Number(int FN)
{
Floor_Number=FN;
}

void setType(string Ty)
{
Type=Ty;
}

void setRoom_Status(int RS)
{
Room_Status=RS;
}

int getRoom_Number()
{
return Room_Number;
}

int getFloor_Number()
{
return Floor_Number;
}

string getType()
{
return Type;
}

int getRoom_Status()
{
return Room_Status;
}

void ShowRoomInfo()
{
cout<<"The Room No. is: "<<getRoom_Number()<< " and the Floor No. is: "<<getFloor_Number()<<" and the type is: "<<getType<<endl;
}

void CheckRoomStatus()
{
if (getRoom_Status()==1)
cout<<"The Room status is booked"<<endl;
else
cout<<"The Room status is not booked"<<endl;
}

void show_status()
{
if (getRoom_Status()==1)
cout<<"The room is:"<<(char)66<<endl;
else if (getRoom_Status()==0)
cout<<"The room is:"<<(char)78<<endl;
}
private:
int Room_Number, Floor_Number, Room_Status;
string Type;
};

أما كود برنامجك :

#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include <string>
using std::string;
using std::getline;
#include "myclass.h"
int main()
{
int R, F, S;
string T;
HotelRoom Room1002(1,1,"Single", 0);
cout<<"Please, enter room no:";
cin>>R;
cout<<"Please, enter floor no:";
cin>> F;
cout<<"Please, enter type:";
cin>> T;
cout<<"Please, enter status:";
cin>> S;
cout<<endl;
Room1002.setRoom_Number;
Room1002.setFloor_Number(F);
Room1002.setType(T);
Room1002.setRoom_Status(S);
Room1002.ShowRoomInfo();
Room1002.CheckRoomStatus();
Room1002.show_status();
return 0;
}

لاحظي أني إستعملت #include "" بهذه الطريقة كون المكتبة التي صنعتها في نفس مسار البرنامج .

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#19

فهمممت........

أخي جزاك الله خير.........

لكن هل من أحد يخبرني كيف أقسم الملف إلى 3 ملفات؟؟

#20

السلام عليكم اخوتي الكرام...شاكرة لك اخي سيف مساعدتك هذي

=============

اختي الكريمة..بالمناسبة (دعاية :happy: ) انا عاملة الإسوارة..وهي عبارة عن مرجع نحوي و إملائي تقريباً لمكونات لغة ++C..تحمليها من الرابط التالي:

The Bracelet

=======

لا تهتمي للمقدمة تبعتها..اول ثلاث اعمدة هي كيفية عمل برنامج نموذجي Typical بواسطة هذي اللغة..وهو تقسيم المشروع إلى ثلاث اقسام..

القسم الأول ملف الرأس ينتهي بالإمتداد التالي .h والثاني ملف الإستعمال وينتهي بالإمتداد .cpp و الثالث الملف المنفذ هندسيا يسموه ملف الزبون وهو اللي موجود بيه الدالة الرئيسية main وينتهي بالإمتداد المعتاد .cpp.

=======

أطيب المُنى

تم تعديل هذه المشاركة بواسطة رغـــــــــد في 31 مارس 2008 في 01:43

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#21

لدي سؤال.......

ألا يجب ان أضع نقاط الوصول في السورس فايل!!!

هذه طريقتها:

Type of function Name of class :: name of function ( parameters ) {

Body

}

طريقتك أخي جدا سهله وجربتها ولكن أذكر أننا تعلمنا هذه الطريقه فهل كلاهما صحيحه وهل من أحد يخبرني عن طريقة الثانيه؟؟

وعليكم السلام أختي رغد........

اعذريني لم أفهم شيئا مما تقولين!!!!

أتمنى أن يشرح لي أحد بالكود اللذي كتبته لأستوعب أكثر..........

#22
اقتباس
وعليكم السلام أختي رغد........

اعذريني لم أفهم شيئا مما تقولين!!!!

معذورة اختي الكريمة..:happy:

--------

بالمناسبة قبل ساعات تقريباً..ارتفع موضوع قديم بالصدفة عن كتاب عربي مؤلفه شاب خبير باللغة اسمه Sultan..وشايفة بالفهرس موضوع ممكن يناسبك بخصوص التعامل مع الملفات: شوفي الفهرس والكتاب و وصفه بالرابط التالي:

/index.php?showtopic=74297

=====

اطيب المُنى

تم تعديل هذه المشاركة بواسطة رغـــــــــد في 1 أبريل 2008 في 14:42

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#23

السلام عليكم.........

كم أحب هذا الموضوع لأنه يشعرني بتطوري واهتمامي:)

أخوتي ....... لدي سؤال وهو كيف أحول المتغير إلى global

كان لدينا سؤال وحللته ولكن بقي لدي عدة فقرات لم أفهمها أساسا فهلا سا عدتموني؟؟

هذا هو الكود:

الملف الأول......

#include<iostream>

using namespace std;

class Shape

{

private:

int num;

char ch;

public:

void setnum(int n);

void setch(char CH);

int getnum();

char getch();

Shape(int n, char c);

int validate(int n);

void Triangle();

int calSymbol();

int val_choice(int num);

};

الملف الثاني:

#include<iostream>

using namespace std;

#include"shap2.h"

void Shape::setnum(int n)

{

num=validate(n);

}

void Shape::setch(char CH)

{

ch=CH;

}

int Shape::getnum()

{

return num;

}

char Shape::getch()

{

return ch;

}

Shape::Shape(int n, char c)

{

setnum(n);

setch©;

}

int Shape::validate(int n)

{

while(n<0)

{

cout<<"you entered negative number, pleas reenter it again"<<endl;

cin>>n;

}

return n;

}

void Shape::Triangle()

{

for(int y=1; y<=getnum(); y++)

{

for(int x=1; x<=y; x++)

cout<<getch();

cout<<endl;

}

}

int Shape::calSymbol()

{

int sum=0;

for(int x=1; x<=getnum(); x++)

sum+=x;

return sum;

}

int Shape::val_choice(int num)

{

int x= num;

while(x!=2 && x!=1 && x!=-1)

{

cout<<"you entered wrong number, pleas reenter it again"<<endl;

cin>>x;

}

return x;

}

الملف الثالث:

#include<iostream>

using namespace std;

#include<iomanip>

using std::setprecision;

#include"shap2.h"

int main()

{

int n;

char ch;

cout<<"enter the number and the charecter" <<endl;

cin>>n;

cin>>ch;

Shape obj(n, ch);

int x;

do

{

cout<<"ente 1 if you want to draw tringle"<<endl;

cout<<"or 2 if you want to print total number of symbols"<<endl;

cout<<"or -1 to exit"<<endl;

cin>>x;

x=obj.val_choice(x);

switch(x)

{

case 1:

obj.Triangle();

cout<<endl;

break;

case 2:

cout<<fixed << setprecision(2);

cout<<"the number of symbols in the shap is "<<(double) obj.calSymbol();

cout<<endl <<endl;

break;

}

}

while(x!=-1);

return 0;

}

أما الفقرات التي لم أفهمها هي:

1. Convert val_choice(int) to global function instead of member function of Shape class, and pass the argument by reference and make your changes that you need.

2. Add new global function called Menu() that print of the previous choices (i.e.1: Draw triangle, 2: Print total number of symbols, -1: exit), read user choice and validate it by calling function val_choice(int)

#24

???????

!!!!!

#25

عودة حميدة اختي الكريمة :happy:

اول شي شو رايك نكتب الشيفرة تبعتك بالصندوق المناسب علشان نشوفه كلنا تمام

الملف الأول:

#include
using namespace std;

class Shape
{

private:
int num;
char ch;


public:

void setnum(int n);
void setch(char CH);
int getnum();
char getch();
Shape(int n, char c);
int validate(int n);
void Triangle();
int calSymbol();
int val_choice(int num);

};

الملف الثاني:

#include<iostream>
using namespace std;

#include"shap2.h"

    void Shape::setnum(int n)
    {
        num=validate(n);
    }
    void Shape::setch(char CH)
    {
        ch=CH;
    }
    int Shape::getnum()
    {
        return num;
    }
    char Shape::getch()
    {
        return ch;
    }
    Shape::Shape(int n, char c)
    {
        setnum(n);
        setch©;
    }
    int Shape::validate(int n)
    {
        while(n<0)
        {
            cout<<"you entered negative number, pleas reenter it again"<<endl;
            cin>>n;
        }
        return n;
    }    
    void Shape::Triangle()
    {
        for(int y=1; y<=getnum(); y++)
        {
            for(int x=1; x<=y; x++)
            cout<<getch();

        cout<<endl;
        }
    }
    int Shape::calSymbol()
    {
        int sum=0;
        for(int x=1; x<=getnum(); x++)
        sum+=x;

        return sum;
    }
    int Shape::val_choice(int num)
    {
        int x= num;
        while(x!=2 && x!=1 && x!=-1)
        {
            cout<<"you entered wrong number, pleas reenter it again"<<endl;
            cin>>x;
        }
        return x;
    }

الملف الثالث:

#include<iostream>
using namespace std;
#include<iomanip>
using std::setprecision;

#include"shap2.h"

    int main()
    {
        int n;
        char ch;
        cout<<"enter the number and the charecter" <<endl;
        cin>>n;
        cin>>ch;
        Shape obj(n, ch);
        int x;
        do
        {
            cout<<"ente 1 if you want to draw tringle"<<endl; 
            cout<<"or 2 if you want to print total number of symbols"<<endl; 
            cout<<"or -1 to exit"<<endl;
            cin>>x;
            x=obj.val_choice(x);
            switch(x)
            {
                case 1:
                obj.Triangle();
                cout<<endl;
                break;
                case 2:
                cout<<fixed << setprecision(2);
                cout<<"the number of symbols in the shap is "<<(double) obj.calSymbol();
                cout<<endl <<endl;
                break;
            }
        }
        while(x!=-1);
        return 0;
}

وهذا سؤالك:

LEFT TO RIGHT

1. Convert val_choice(int) to global function instead of member function of Shape class, and pass the argument by reference and make your changes that you need.

2. Add new global function called Menu() that print of the previous choices (i.e.1: Draw triangle, 2: Print total number of symbols, -1: exit), read user choice and validate it by calling function val_choice(int)

بعد كذا يمكن حدا يتفاعل مع الموضوع :happy:

-----------

ماني مسؤولة انا عن اخطاء بالشيفرة..نسخ ولصق..راجعيه انتي كمان :happy:

----------

وإن شاء الله بتفاعل مع الموضوع لاحقاً..لو صار معي ولو مكان الموضوع حل واجب بالنسبة للمشرفين.

اطيب المُنى

تم تعديل هذه المشاركة بواسطة رغـــــــــد في 4 مايو 2008 في 19:18

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

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