
09-04-2008, 09:26 PM
|
مشرف سابق | |
| | | | | | | | | | | | | | | | | | | | | | | | معلوماتي ومن مواضيعي | | | | |
|
| كاتب الموضوع :
MaZeN المنتدى :
منتدى لغات البرمجة رد: البـرمجــــة غرضيــــة التوجــــة Object-Oriented Programming
** الأصناف Classes : تعريف الصنف : هو عبارة عن وحدة تحوي مجموعة من البيانات ( الخاصة والعامة )بالإضافة إلى تعريف الدوال ( العمليات ) حيث يطلق على الدوال المعرفة داخل الصنف بـ " أعضاء دالية " member Function . * الإعلان عن الصنف :  أمثلة :. مثال 1: مثال على صنف الوقت .:: كود PHP: class Time {
private:
int hor ,minute ,second;
public:
void settime(int,int,int);
void printstandard ();
void printmilitary();
}; مثال 2 : مثال على صنف المستطيل :. كود PHP: class rectangle {
int x,y;
public:
void set_value(int,int);
int area();
}; بمجرد تعريف الصنف يمكن استخدامه كنوع جديد حيث يطلق عليه ( نوع معرّف من قبل المستخدم). ** تعريف الكائنات .::
يتم تعريف الكائنات في البرنامج الرئيسي وفقاً للصيغة التالية : كود PHP: 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() البرنامج الأول : نقوم بكتابة برنامج يقوم بحساب مساحة المستطيل ( باستخدام الأصناف ) .. كود PHP: #include <iostream.h>
#include <cstdlib>
using namespace std ;
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 . ** البرنامج الثاني : برنامج يقوم بحساب مساحة ومحيط الدائرة ( مستخدماً الأصناف ) .:: كود PHP: #include <iostream.h>
#include <cstdlib>
using namespace std ;
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()
{
circle c;
c.get_r();
c.area();
c.cir();
c.display();
system("PAUSE");
} نفس المثال السابق تقريباً من حيث الفكرة حيث :..
r = نصف القطر . area1=المساحة. c = المحيط .
cir = دالة ايجاد المحيط . display= طباعة المساحة والمحيط . area= المساحة .
| | توقيع MaZeN |

| | |