جلنار
13-10-2006, 01:49 PM
بسم الله الرحمن الرحيم
انا عضو جديدة في هذا المنتدى. ولقد قرأت معضم المواضيع في قسم لغة c++ واشكركم على هذه الشروحات.
-ولكني لم أجد اي شرخ بخصوص class فأنا لم افهمه جيدا فهل لكم أن تساعدوني ؟
-ولقد طلب منا الدكتور ان نكتب برنامج الالة الحاسبة بلغة c++ باستخدام ال class فهل لكم ان تساعدون في كتابته؟
وجزاكم الله خيرا
منطلق بطموحي
14-10-2006, 09:06 PM
السلام عليكم :
مرحبا بك بالمنتدى halatkn
حسنا ما هي المشاكل التي صادفتك اثناء البرمجة ؟
هل بدات بالبرمجة فعلا ؟
ابداي على بركة الله و ساساعدك ان شاء الله
جلنار
16-10-2006, 09:13 AM
بسم الله الرحمن الرحيم
في البداية احب ان اتشكرك .
انا بدأت البرمجة فعلا منذ وقت قصير واسم الكتاب الذي أخذه في الجامعة هو :
How to program c++_fifth edition
ارجو ان تكون قد قرأته من قبل
وانا بالتحديد لم أفهم ( chapter 3(introduction to class and objects
فأرجو منك أن تساعدني
وانا اسف لتأخري في الاجابة لأنني اكون في الجامعة كل يوم ماعدا يوم الاثنين والاربعاء
منطلق بطموحي
17-10-2006, 09:05 AM
السلام عليكم:
نعم اعرف الكتاب ل dietel
و لكن لدي نسخات اقدم منه ...في النسخات الجديد يبدأ بال class و كان العكس هو ما يحدث بالنسخات القديمه
المهم ما كنت اريده منك هو ان تبداي بكتابة الكود ثم ساعدل عليه و اصحح الاخطاء...فلا استطيع ان اشرح فصل كامل و هو class من البداية
و لكن كبداية :
ال class هي طريقة برمجية بالكائنات بدلا من البرمجة التقليدية باستخدام الدوال
ال class يقسم لثلاثة انواع:
1. public و هو يشاهد من قبل البرامج ككل
2 .private و هو خاص
3.Protected لا اتوقع انكم ستتعاملون معه هذا الفصل
الان لكي تفهمي معنى ال class تخيلي معي عمارة...هذه العمارة بها حوض سباحة لجميع السكان ....اذن حوض السباحة public بالنسبة ل class العمارة
و لكن محمد جار خالد لا يمكن الدخول لشقته خالد اذن الشقة تعتبر هنا private
البنية الشكلية ل class دائما تكون على النحو التالي:
class Name{
private:
some data
.....
.....
.....
public:
some functions
.....
.....
.....
}; //end of class
ساساعدك بجزء بسيط من البرنامج عليك برمجة الباقي منه ...
الان لدينا البنية التالية :
class Calculator{
private:
double x;
double y;
double result;
public:
double Add();
double Subtract();
double Multiply();
double Division();
char choice;
};
الاعداد x , y و النتيجة احتاج لان تكون public عامه للجميع بينما الدوال التي تقوم بالوظائف فليس من المهم للمستخدم ان يعرف كيفيه اداء وظيفتها و هذا ما يسمى الكبسله و هي احد مميزات البرمجة الكائنية oop اي عن طريق ال class
الان يمكن تعريف الدوال مثل add داخل ال class و لكن اعتقد ان كتباكم يتبع طريقة تعريفها خارج الصف لذلك ساتبع طريقته في البرمجة
مثلا سابرمج الدالة Add خارج الصف ...تلاحظين ان نوعها double لتاخذ قيم كسرية و لا بد هنا من ان ترجع قيمه معينه ...
double Calculator::Add()**
cout << " Enter two numbers: ";
cin >> x >> y;
return(x + y);
}
هذا الشكل العام
دائما نكتب
نوع القيمة التي ترجعها الدالة ( int و غيره ) اسم ال class :: اسم الدالة ( المتغيرات ان وجدت ) كما بالمثال
البرمجة داخل الدالة عادية جدا اتوقع قيم من المستخدم و سيرجع لي حاصل الجمع
الان في معظم ال class نحتاج لما يسمى constrcutor او الباني ...يكون باسم ال class نفسه و يستفاد منه باعطاء قيم افرتضاية بحال لم تدخل قيم من المستخدم ...في هذا البرنامج لا حاجة ل constrctor لانه برنامج بسيط اذ سيفترضه البرنامج من ذات نفسه ( ان كان مطلوب ان تضعوا ال الباني دائما قومي ببرمجته ضمن البرنامج )
الان ضمن ال main
يمكن ان اعمل do while مثلا بداخلها switch لاختار العملية المراد تنفيذها سواء من طرح او جمع او قسمه
مثلا لو اختار المستخدم + سيقوم بالجمع لانادي دالة الجمع بداخل ال main ساعرف متغير من نوع Calculator و ليس int او الخ ...اي من نوع ال class و هذه ميزة جديدة
فلنسميه مثلا Caclulator z;
فلو طلب المستخدم عملية جمع عددين ما علي الا ان انادي الدالة عن طريق ما يسمى object كالتالي
cout<<z.add();
لاحظي استطعت ان استعمل cout لان نوع الدالة بال class ترجع قيمة ما و لكن لو كانت void فساقوم بازالة ال cout و بكل بساطة انادي الدالة المطلوب بنفس الطريقة
ابداي بالبرمجة على بركة الله و لو صادفتك مشاكل ضعي الكود و سنعمل على مناقشته معا
wafk
abo_baker24
31-10-2006, 11:04 AM
السلام عليكم ورحمة الله وبركاته
اختي العزيزة ، اعتقد ان الرد متأخر ، ولكن وضعته لتعم الفائدة
هذا البرنامج يستخدم كلاس Calculator كما وضحه لك الأخ "منطلق بطموحي"
طبعا ، ما عليك إلا ان تكتبي
9+4 مثلا لإجاد النتيجة وبالمثل باقي العمليات
الملفات ذوات الصيغ Calculator.h, Calculator.cpp و main.cpp
تحوي ترويسة الصف ، والتوابع الخاصة به ، بالإضافة إلى المين لاختبار الصف
بالتوفيق
// Calculator.h
class Calculator
**
public:
Calculator(void);
double Add();
double Subtract();
double Multiply();
double Division();
void read() ;
void print();
char getc();
~Calculator(void);
private :
char c;
double x;
double y;
};
وهنا ملف الـ soures
// Calculator.cpp
#include "Calculator.h"
#include <iostream>
using namespace std;
Calculator::Calculator(void)
**
x=1;
y=1;
}
Calculator::~Calculator(void)
**
}
double Calculator::Add()
**
double sum;
sum = x + y ;
return sum;
}
double Calculator:: Subtract()
**
return x - y;
}
double Calculator::Multiply()
**
return x * y;
}
double Calculator:: Division()
**
double Division;
if ( y == 0 )
**
cout << " invaild value try again "; read();
Division = x / y ;
}
else
**
Division = x / y ;
}
Division = x / y ;
return Division;
}
void Calculator::read ()
**
cin >> x;
cin>>c;
cin >> y;
}
void Calculator::print ()
**
double result;
switch (c)
**
case '+' :
result=Add();
break;
case '-' :
result=Subtract();
break;
case '*' :
result=Multiply();
break;
case '/' :
result= Division();
break;
}
cout <<" the result of : " << x << c << y <<" = "<< result;
}
char Calculator::getc()
**
return c;
}
هنا التابع الرئيسي واختبار الكلاس
// main.cpp
#include <iostream>
using namespace std;
#include "Calculator.h"
void preface();
int main ( )
**
preface ( );
Calculator x;
char choice;
do **
cout <<"write now : ";
x.read();
x.print();
cout << "\n\n press any key to continue or <c> to exit : ";
cin >> choice;
} while ( choice != 'c');
cout << endl;
return 0;
}
void preface ( )
**
cout << " ****** Wellcome to this simple Calculator ******\n\n"
<< " you can adding , subtracting , multipling and do division for two numbers\n"
<< " for example you can type : 4+5 the output will be\n"
<< " \"the result of : 4+5 = 9\"\n";
for ( int i=0 ; i<4;i++)
**
cout << endl;
}
}