بنت الحصن
05-26-2008, 11:39 AM
الأصناف :
تعريف الصنف : هو عبارة عن وحدة تحوي مجموعة من البيانات ( الخاصة والعامة )بالإضافة إلى تعريف الدوال ( العمليات ) حيث يطلق على الدوال المعرفة داخل الصنف بـ " أعضاء دالية " member Function .
* الإعلان عن الصنف :
أمثلة :.
مثال 1: مثال على صنف الوقت .::
كود:
class Time{private:int hor ,minute ,second;public:void settime(int,int,int);void printstandard ();void printmilitary();};
مثال 2 : مثال على صنف المستطيل :.
كود:
class rectangle{int x,y;public:void set_value(int,int);int area();};
بمجرد تعريف الصنف يمكن استخدامه كنوع جديد حيث يطلق عليه ( نوع معرّف من قبل المستخدم).
** تعريف الكائنات .::
يتم تعريف الكائنات في البرنامج الرئيسي وفقاً للصيغة التالية :
كود:
class_name object_name
حيث :
class_name : اسم الصنف ( نفس اسم الصنف الذي كتبناه في بداية البرنامج )
object_name : اسم الكائن ، وهو اختياري ، يستخدم للوصول لعناصر الصنف .
مثال.::
كود:
rectangle rect;
حيث rectangle اسم الصنف ، و rect اسم الكائن .
وإذا أردنا أن نعرف أكثر من كائن بنفس الوقت ، نفس العملية السابقة ، فقط نفصل بين كل كائن والآخر باشارة الفاصلة ( , ) . والمثال التالي يوضح ما سبق .::
كود:
rectangle rect1,rect2,rect3;
** استدعاء الأعضاء :.
أعضاء الصنف لا يمكن أن نصل إليها من خارج الصنف إلا عن طريق الكائنات ويتم ذلك بالصيغة التالية :
كود:
Object_name.member
حيث .::
Object_name : اسم الكائن .
member : اسم العضو الذي نريد الوصول إليه .
مثال : إذا أردنا الوصول للدالة area() باستخدام الكائن rect نكتب الآتي :
كود:
rect1.area()
البرنامج الأول : نقوم بكتابة برنامج يقوم بحساب مساحة المستطيل ( باستخدام الأصناف ) ..
كود:
#include <iostream.h>#include <stdlib.h>class rectangle{int x ,y;public :void set_value(int a,int b){x=a;y=b;}int area(){return x*y;}};main(){rectangle rect1,rect2;rect1.set_value(3,4);rect2.set_value(5 ,6);cout<<"Rect1 Area = "<<rect1.area()<<endl;cout<<"Rect2 Area = "<<rect2.area()<<endl; system("PAUSE");}
شرح للبرنامج :.
في البداية عرفنا متغيرات خاصة Private وهما x ,y وهنا ملاحظة وهي طالما أننا عرفنا ذلك في بداية الصنف ولم نحدد مستوى الحماية فإن مستوى الحماية الإفتراضي هو Private .
بعد ذلك أنشأنا دالة باسم set_value بوسيطين في مستوى الحماية العام Public وظيفة هذه الدالة هي مساواة القيم التي يحددها المستخدم بالمتغيرات الخاصة ، أو بمعنى أخر وظيفتها الوصول للمتغيرات الخاصة x,y .
بعد ذلك أنشأنا دالة area() وظيفتها إرجاع مساحة المستطيل وهي عملية حسابية
الطول × العرض .
ثم في الدالة الرئيسية main() قمنا في البداية في باشتقاق كائنين rect1 و rect2 بعد ذلك قمنا باستدعاء دالة set_value وحددنا قيم الوسائط ..
ثم بعد ذلك استدعينا دالة حساب المساحة area() لكل من الكائنين rect1 ,rect2 .
** البرنامج الثاني : برنامج يقوم بحساب مساحة ومحيط الدائرة ( مستخدماً الأصناف ) .::
كود:
#include <iostream.h>#include <stdlib.h>class circle{private :int r;float area1,c;public :void get_r(){cout<<"Enter radius \n";cin>>r;}void area(){area1=r*r*3.14;}void cir(){c=2*r*3.14;}void display (){cout<<area1<<endl;cout<<c<<endl;}};main(){circl e c;c.get_r();c.area();c.cir();c.display(); system("PAUSE");}
نفس المثال السابق تقريباً من حيث الفكرة حيث :..
r = نصف القطر . area1=المساحة. c = المحيط .
cir = دالة ايجاد المحيط . display= طباعة المساحة والمحيط . area= المساحة .
تمرين ..:: أكتب برنامج يقوم بايجاد مضروب عدد مدخل من قبل المستخدم ( مستخدماً الأصناف ) ..
تعريف الصنف : هو عبارة عن وحدة تحوي مجموعة من البيانات ( الخاصة والعامة )بالإضافة إلى تعريف الدوال ( العمليات ) حيث يطلق على الدوال المعرفة داخل الصنف بـ " أعضاء دالية " member Function .
* الإعلان عن الصنف :
أمثلة :.
مثال 1: مثال على صنف الوقت .::
كود:
class Time{private:int hor ,minute ,second;public:void settime(int,int,int);void printstandard ();void printmilitary();};
مثال 2 : مثال على صنف المستطيل :.
كود:
class rectangle{int x,y;public:void set_value(int,int);int area();};
بمجرد تعريف الصنف يمكن استخدامه كنوع جديد حيث يطلق عليه ( نوع معرّف من قبل المستخدم).
** تعريف الكائنات .::
يتم تعريف الكائنات في البرنامج الرئيسي وفقاً للصيغة التالية :
كود:
class_name object_name
حيث :
class_name : اسم الصنف ( نفس اسم الصنف الذي كتبناه في بداية البرنامج )
object_name : اسم الكائن ، وهو اختياري ، يستخدم للوصول لعناصر الصنف .
مثال.::
كود:
rectangle rect;
حيث rectangle اسم الصنف ، و rect اسم الكائن .
وإذا أردنا أن نعرف أكثر من كائن بنفس الوقت ، نفس العملية السابقة ، فقط نفصل بين كل كائن والآخر باشارة الفاصلة ( , ) . والمثال التالي يوضح ما سبق .::
كود:
rectangle rect1,rect2,rect3;
** استدعاء الأعضاء :.
أعضاء الصنف لا يمكن أن نصل إليها من خارج الصنف إلا عن طريق الكائنات ويتم ذلك بالصيغة التالية :
كود:
Object_name.member
حيث .::
Object_name : اسم الكائن .
member : اسم العضو الذي نريد الوصول إليه .
مثال : إذا أردنا الوصول للدالة area() باستخدام الكائن rect نكتب الآتي :
كود:
rect1.area()
البرنامج الأول : نقوم بكتابة برنامج يقوم بحساب مساحة المستطيل ( باستخدام الأصناف ) ..
كود:
#include <iostream.h>#include <stdlib.h>class rectangle{int x ,y;public :void set_value(int a,int b){x=a;y=b;}int area(){return x*y;}};main(){rectangle rect1,rect2;rect1.set_value(3,4);rect2.set_value(5 ,6);cout<<"Rect1 Area = "<<rect1.area()<<endl;cout<<"Rect2 Area = "<<rect2.area()<<endl; system("PAUSE");}
شرح للبرنامج :.
في البداية عرفنا متغيرات خاصة Private وهما x ,y وهنا ملاحظة وهي طالما أننا عرفنا ذلك في بداية الصنف ولم نحدد مستوى الحماية فإن مستوى الحماية الإفتراضي هو Private .
بعد ذلك أنشأنا دالة باسم set_value بوسيطين في مستوى الحماية العام Public وظيفة هذه الدالة هي مساواة القيم التي يحددها المستخدم بالمتغيرات الخاصة ، أو بمعنى أخر وظيفتها الوصول للمتغيرات الخاصة x,y .
بعد ذلك أنشأنا دالة area() وظيفتها إرجاع مساحة المستطيل وهي عملية حسابية
الطول × العرض .
ثم في الدالة الرئيسية main() قمنا في البداية في باشتقاق كائنين rect1 و rect2 بعد ذلك قمنا باستدعاء دالة set_value وحددنا قيم الوسائط ..
ثم بعد ذلك استدعينا دالة حساب المساحة area() لكل من الكائنين rect1 ,rect2 .
** البرنامج الثاني : برنامج يقوم بحساب مساحة ومحيط الدائرة ( مستخدماً الأصناف ) .::
كود:
#include <iostream.h>#include <stdlib.h>class circle{private :int r;float area1,c;public :void get_r(){cout<<"Enter radius \n";cin>>r;}void area(){area1=r*r*3.14;}void cir(){c=2*r*3.14;}void display (){cout<<area1<<endl;cout<<c<<endl;}};main(){circl e c;c.get_r();c.area();c.cir();c.display(); system("PAUSE");}
نفس المثال السابق تقريباً من حيث الفكرة حيث :..
r = نصف القطر . area1=المساحة. c = المحيط .
cir = دالة ايجاد المحيط . display= طباعة المساحة والمحيط . area= المساحة .
تمرين ..:: أكتب برنامج يقوم بايجاد مضروب عدد مدخل من قبل المستخدم ( مستخدماً الأصناف ) ..