رد: ~~~ البرمجة غرضية التوجة ( oop ) ~~ ^_^
مقدمه للـ OOP
في البرمجه الكينونيه OOP ننظر للاشياء من حولنا على اساس انها كائنات objects لها صفات attributes وكذلك لها سلوك behaviors اذا اخذنا على سبيل المثال person كـ object فالشخص له صفات attributes اللي هي: الاسم* العمر* الجنسيه* المهنه*العنوان ...الخ
الطريقه البسيطه لاستخدام الـ OOP في البرمجه هي عن طريق استخدام الStruct ومن خلال المثال التالي سيتوضح اكثر مفهوم الـ Struct ::
struct Date{
int day;
int month;
int year;
};
http://www8.0zz0.com/2009/03/01/20/680534131.gif
الكود السابق بيعرف struct اسمهُ date ولهُ 3 attributes وهي اليوم والشهر والسنه
عند تعريف struct فاننا نقوم بانشاء نوع جديد new type تماما كـ int واسم هذا النوع الجديد هو date يتكون من 3 اجزاء اليوم والشهر والسنه
نأتي الان لاستخدام النوع الجديد اللي عرفناه احنا سابقاً::
Void main()
{
Date today; ……………………………….create a new variable of type Date
Date birthday; ………………………………create another new variable of type Date
http://www12.0zz0.com/2009/03/01/21/549944592.gif
today.day=1;
today.moth=3;
today.year=2009;
birthday.day=29;
birthday.moth=6;
birthday.year=1995;
cout<<birthday.day<<”/”<<birthday.month<<”/”<<birthday.year<<endl;
}
كما هو موضح في الشكل فان المتغيرات today و birthday لها استقلاليه تماما عن بعضها اي ان لكل منهما مكانه الخاص في الذاكره الشيء الوحيد المشترك بينهما هو ان لهم نفس الاجزاء لانهما من نفس النوع Date
يمكن تشبيه ذلك ب x و Y كمتغيرات من نوع int وان لكل منهما مساحته الخاصه بالذاكره وهي 4 bytes
من الملاحظ من خلال المثال انه لا يمكننا الوصول لاجزاء المتغير Today و birthday في الـ main وبالتالي للوصول اليهم نستخدم (.) ونتعامل معهام كأي متغيرات عاديه من نوع int .
وبنفس الطريقه المستخدمه في المثال بإمكاننا انشاء انواع جديده ولتكن على سبيل المثال :student
struct student{
int id;
string name;
int age;
string address;
};
وبامكاننا استخدام نفس المفهوم على اي تطبيق اخر مثل الـarray ونتعامل مع الـ struct كأي data type
لكن الطريقه المبسطه واقصد بذلك الـ struct لم تعد تستخدم بالبرمجه الا ما ندر لان وجد البديل عنها الذي يمثل الـOOP الا وهو مفهموم استخدام الـ class .
تعريف الـ class :
Is a collection of fixed number of components * the components of a class are called members of the class .
Class members can be ::1. variables …….attributes
2. functions …methods
الـ attributes: كما ذكرنا سابقا هي صفات للـ Object
والـ methods: هي التي تتعامل مع هذه الصفات
الـ members of the class ثلاث انواع ::::
1. public : نستطيع ان نتعامل مع هذه العناصر من داخل وخارج الـ class
2. private : لا نستطيع ان نتعامل معهم خارج الـ class وانما داخلها فقط هذا يوضح مفهموم الـencapsulation والذي نقصد به ان العناصر لا نستطيع التعامل معاها بشكل مباشر خارج الـ class وانما نتعامل معها من خلال Methods والتي تمثل وسيط
3. protected : سوف يتوضح مفهومها فيما بعد عندما نصل الا درس الوراثه inheritance و درس الـ polymorphism
ملاحظة:
* كل عناصر الـ class هي private by default
سوف يتوضح مفهوم الـ class اكثر من خلال المثال البسيط التالي ::
class test{
private :
int x;
public:
int y ;
};
في الكود السابق عرفنا متغيريين هما الـ x والـY وهما من نوع Int فـ الـ X هو private والـ Y هو public
Void main()
{
test obj1;
obj1.y=10 ……………..coz its public we can access it from main unlike x
obj1.x=5………….Error coz x is private
}
اتمنى تكون طريقه الشرح سلسه
واذا في اي توجيهات على الشرح احكوا لي منشان اغير طريقه الشرح
وان شاء الله تستفيدوا
وانتظروا الدرس القادم ان شاء الله
ومنتظره منكم اي سؤال او استفسار
موفقين ان شاء الله
رد: ~~~ البرمجة غرضية التوجة ( oop ) ~~ ^_^
للاسف حطيت صور بسيطه توضيح للشرح بس مش عارفه ليه ماظهروا ؟؟
اذا ظاهرين الصور احكوا لي ويا ريت حد يشيك على الروابط تبعهم ويحكي لي
http://www8.0zz0.com/2009/03/01/20/680534131.gif
http://www12.0zz0.com/2009/03/01/21/549944592.gif
Good luck
رد: ~~~ البرمجة غرضية التوجة ( oop ) ~~ ^_^
يسلمووووووووووووووو روووووووووعه هذي انا قرأت عنها وفهمتها ..
والله شوقتيني لها منتظرة على أحر من الجمر واسلوبك ماشاء الله سلس ..
متابعه وبشدة ..
رد: ~~~ البرمجة غرضية التوجة ( oop ) ~~ ^_^
Quote:
Originally Posted by
حنــــان
يسلمووووووووووووووو روووووووووعه هذي انا قرأت عنها وفهمتها ..
والله شوقتيني لها منتظرة على أحر من الجمر واسلوبك ماشاء الله سلس ..
متابعه وبشدة ..
بعدا شاصدق نفسي :)
يلا ان شاء الله خير الحمدلله الي فاهمه هذي الاشياء
خلاص انتظري الدرس الجديد
تحياتي لك
رد: ~~~ البرمجة غرضية التوجة ( oop ) ~~ ^_^
راااااااااائعة أختي إلى الآمام وأنا معاكم من بعيد << مش تخصصي :)
بس والله اسلوب راقي وخصوصاً المصطلحات لأننا اكره لما أشوفها بالعربي ^^
بس لحد الآن أعتقد أننا عارف هي النقاط
منتظر البقية
رد: ~~~ البرمجة غرضية التوجة ( oop ) ~~ ^_^
Quote:
Originally Posted by
ســـامح
راااااااااائعة أختي إلى الآمام وأنا معاكم من بعيد << مش تخصصي :)
بس والله اسلوب راقي وخصوصاً المصطلحات لأننا اكره لما أشوفها بالعربي ^^
اصلا ما اعرف ايش هي بالعربي وبصراحه واجهت صعوبه ان الشرح يكون بالعربي لو كنت شرحت بالانجليزي كان اسرع واسهل لي :)
بس لحد الآن أعتقد أننا عارف هي النقاط
منتظر البقية
اذا مو تخصصك ايش جابك عندنا >>> امزح طبعا اخي اهلا وسهلا وتابع براحتك :)
على فكره اذا مش تخصصك ليه مهتم كذا بوجع الراس :)
رد: ~~~ البرمجة غرضية التوجة ( oop ) ~~ ^_^
ياسلام أنا منتظرة ...
<<< انا عارفة مستعجلة مرة ..
رد: ~~~ البرمجة غرضية التوجة ( oop ) ~~ ^_^
Quote:
Originally Posted by
حنــــان
ياسلام أنا منتظرة ...
<<< انا عارفة مستعجلة مرة ..
انا كثيررررررررررررررررر اسفه حبيبتي
بس والله انشغلت بالدراسه والواجبات والهم كله:30:
بس ان شاء الله بحط الدرس الثاني بكره باذن الله
واعذريني على التقصير
سلاااااااااااااام
رد: ~~~ البرمجة غرضية التوجة ( oop ) ~~ ^_^
مو مشكله خذي راحتك .. اهم شيء دروسك انتي انا لاحقة عليها ..
رد: ~~~ البرمجة غرضية التوجة ( oop ) ~~ ^_^
رووووووووعه يا الاء ..
أنا وين كنت عن هالموضوع ..
أنا كمان جداااااا محتاجه لهالموضوع ..:17:
متابعة هنا ..
ويعطيك الف عافيه يارب ..love:
رد: ~~~ البرمجة غرضية التوجة ( oop ) ~~ ^_^
السلام عليكم
ومساء الخير
اولا حابه اعتذر لم حبيباتي بس والله انشغلت مع الدراسه
والله اني جد خجلانه:8: منكم انشاء الله تسامحوني
وانشاء الله بحاول اشد حيلي واخلص بسرعه قبل ما تيجي الامتحانات بعدين يمكن ما اخلص الي بداته :30:
ان شاء الله خير
ان شاء الله تستفيدوا من درس اليوم وتكون طريق الشرح مناسبه وسهله :9:
تحياتي
رد: ~~~ البرمجة غرضية التوجة ( oop ) ~~ ^_^
set and get functions::
في البرمجه الكينونيه نحرص على تحقيق مبداء الـencapsulation(hiding data) لذلك الـdata members (attributes) تكون دائماُ private وبالتالي لا نستطيع الوصول لها من خارج الـclass
وللوصول لها من خارج الـ class نستخدم public functions داخل الـclass للتعامل مع الـprivate members ونستطيع مناداتها من خارج الـclass هذه الـfunctions هي ::get & set functions
Get function تستخدم لارجاع قيمه بينما الـset function تستخدم لاسناد القيم لمتغير معين
سيتوضح مفهوم الـset & get من خلال المثال التالي::
class Time
{
private:
int hour;
int minute;
int second;
public:
void setTime(int h*int m*int s)
{
hour =h;
minute=m;
second=s;
}// in this function we assigned values to private members
void setHour(int h)
{
hour =h;
}
void setMinute(int m)
{
minute=m;
}
void setSecond(int s)
{
second=s;
}
int getHour()
{
return hour;
}
int getMinute()
{
return minute;
}
int getSecond()
{
return second;
}
void printTime()
{
cout<<hour<<”:”<<minute<<”:”<<second<<endl;
}
};
void main()
{
Time A*B;………… Time من نوع objects عرفناهم كـ A and B
A.seTtime(12*40*50);…….set function.اعطاء قيم واسنادها بمناداة الـ
B.setTime(8*3*7);
A.pritTime();
int h ;
cin>>h;
B.setHour(h);
cout<<B.getHour();
}
من المثال السابق يتضح لنا مفهوم الـ set function وهو استخدامها لاسناد قيم لمتغير private ونستطيع مناداتها خارج الـ class وبما انها تسند قيم بالتالي تحتاج الى parameter list وتستقبل هذه القيم وتسندهم
اما بالنسبه للـget function فاننا نستخدمها للحصور على قيمه معينه لمتغير معين في اclass ولذلك دائما ترجع قيمه
Constructor and destructor :
اولاٌ:الـ constructor
· عباره عن public function داخل الـclass
· لها نفس اسم الـclass
· لا ترجع قيمه
· ليسى لها اي return type(void*int….etc)
· Called automatically when an object is created بمعنى انها تشتغل اتوماتيكياً اول ما ينخلق او ينتشىء الـobject وما تحتاج ان نناديها
انواع الـconstructor :
1. default constructor :
has an empty parameter list بمعني انه ليس لها اي parameters
2. constructor with parameter list :
له parameter list ويستقبل هذه القيم ويقوم باسنادها للمتغيرات كقيم اوليه للdata members
وعادةً يستخدم الـconstructor لاعطاء قيم اوليه للمتغيرات data members
او اذا اردنا عمل شي معين عند خلق اي object من نوع الـclass مثل عمل counter لعد كم object انخلق من هذا النوع
ويمكن ان يكون في الـclass الواحده اكثر من constructor ولكن هناك ملاحظه مهمه اذا كتبنا الconstructor with parameters من الضروري كتابه الdefault constructor
ولكن لا يشترط عند كتابه الـdefault constructor كتابه الconstructor with parameters
اي ان الـdefault يستطيع التوااجد لوحده بعكس الاخر constructor with parameters بحيث يحتاج وجود الـdefault قبله.
كما انه عند وجود اكثر من constructor لا يمكن ان يشتغل اكثر من واحد واحد فقط الذي سوف يشتغل وهو الconstructor الذي بيطابق الparameters الذي أًرسلت عند خلق الObj او قد لا يكون هنالك Parameters وبالتالي بيشتغل الdefault
ويستضح ذلك من خلال المثال التالي ::
{
int x*y;…………………….. by default private (no need to write it down)
public:
point ()
{
x=y=0;
cout<<”Hello” <<endl;
}// end of default constructor
};
void main()
{
point a;
point b;
point c;
}
Output:
Hello
Hello
Hello
Same example using 2 types of constructor ::
class point
{
int x*y;…………………….. by default private (no need to write it down)
i
public:
point ()
{
x=y=0;
cout<<”Hello you are in default constructor”<<endl;
}// end of default constructor
Point(int a*int b)
{
X=a;
Y=b;
Cout <<”Hello you are in constructor with 2 parameters ” <<endl;
}// end of constructor with 2 parameters
};
void main()
{
point A;….. run default constructor
point B(5*7);……….run second constructor
point C(3*4*5);…….Error coz no matching constructor exist
}
Output
Hello you are in default constructor
Hello you are in constructor with 2 parameters
ثانياً: destructor :
· هو عباره عن public function في الـclass
· لها نفس اسم الـclass ولكن يسبقها اشارة ~ للتعريف بها كـdestructor
· ليسى لها return type او parameter list
· Called automatically when an object die
معنى انها تشتغل اوتوما تيكيا عند موت الـobj ونعني بذلك انتهاء فترته في RAM(memory) سيتضح معنى ذلك من خلال المثال التالي
Ex:
class test
{
Int x*y ;
Public:
Test ()
{
Cout<<”default construcr”<<endl;
}//end of constructor
Test()~
{
Cout<<”Destructor”<<endl;
}
};
Void main()
{
Test A*B*C;
Test D;
{
Test E;
Test F;
}
Test G;
}
Output:
Default constructor…..for A
Default constructor …..for B
Default constructor…..for C
Default constructor…..for D
Default constructor…… for E
Default constructor…….for F
Destructor ……for F
Destructor…..for E
Default constructor…..for G
Destructor ….for G
Destructor ….for D
Destructor ….for C
Destructor ….for B
Destructor ….for A
من الملاحظ من الـoutput ان اخر Obj انخلق في الـBlock هو اول واحد يموت
ومن المعروف ان المتغيرات بشكل عام تنتهي او تموت عند نهايه الblock سواء كان block لجمله If او for بحيث انه يكون Local variable وليسى global variable