مشاهدة النسخة كاملة : الى المهندس منطلق بطموحي خاصة وجميع المهندسين


جلنار
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;
}
}