Professional Documents
Culture Documents
البرمجة الشيئية
البرمجة الشيئية
-1-
ﺍﻟﱪﻧﺎﻣﺞ ﳚﺐ ﺃﻥ ﻳﻜﺮﺭx * x * x * x = x4 ﻣﻦ ﺍﳌﻤﺮﺍﺕ ﻛﻤﺜﺎﻝn ﻣﻦ ﻧﻔﺴﻬﺎx ﺑﺄﻥ ﻳﻀﺮﺏxn ﻟﻴﺤﺴﺐ ﻗﻴﻤﺔC++ • ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﺑﻠﻐﺔ
-: ﻳﻄﺒﻊ ﺍﻟﱪﻧﺎﻣﺞ ﺍﻟﻨﺘﻴﺠﺔ ﰲ ﺍﻟﺼﻮﺭﺓ ﺍﻟﺘﺎﻟﻴﺔn , x ﻭﻛﻞ ﺯﻭﺝ ﻣﻦ ﻗﻴﻢn ﻭx ﻣﻦ ﻗﻴﻢk ﻫﺬﻩ ﺍﻟﻌﻤﻠﻴﺔ ﻟﻌﺪﺩ
#include <iostream.h>
void main()
{
int x,n,k,i,j;
long r;
cin>>k;
for (j=1;j<=k;j++)
{
cin>>x>>n;
r=1;
for (i=1;i<=n;i++)
r=r*x;
cout<<x<<" raised to the power of
"<<n<<"= "<<r<<endl;
}
}
2 ﺍﻟﻨﺘﺎﺋﺞ •
2 3
2 raised to the power of 3= 8
3 2
3 raised to the power of 2= 9
Press any key to continue
#include <iostream.h>
#include <math.h>
void main()
{
int x,n,k,i,j;
long r;
cin>>k; ﺣﻞ ﺁﺧﺮ
for (j=1;j<=k;j++)
{
cin>>x>>n;
r=1;
for (i=1;i<=n;i++)
r=pow(x,n);
cout<<x<<" raised to the power of
"<<n<<"= "<<r<<endl;
}
}
-2-
ﻣﻦ ﺍﺠﻤﻟﻤﻮﻋﺎﺕn ﻟﻴﺤﺪﺩ ﺃﻛﱪ ﻗﻴﻤﺔ ﻣﻦ ﺑﲔ ﺛﻼﺙ ﻗﻴﻢ ﻭﻳﻜﺮﺭ ﻫﺬﻩ ﺍﻟﻌﻤﻠﻴﺔ ﻟـC++ • ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﺑﻠﻐﺔ
#include <iostream.h>
void main()
{
int x,y,z,k,i,max;
cin>>k;
for (i=1;i<=k;i++)
{
cin>>x>>y>>z;
max=x;
if (y>max)
max=y;
if (z>max)
max=z;
cout<<"maximum of group "<<i<<" = "<<max<<endl;
}
}
2 ﺍﻟﻨﺘﺎﺋﺞo
4 5 6
maximum of group 1 = 6
1 2 3
maximum of group 2 = 3
Press any key to continue
-3-
ﻣﻦ ﺍﺠﻤﻟﻤﻮﻋﺎﺕk ﻹﳚﺎﺩ ﺃﻛﱪ ﻗﻴﻤﺔ ﻣﻦ ﺑﲔ ﺛﻼﺙ ﻗﻴﻢ ﻭﺫﻟﻚ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺪﻭﺍﻝ ﺍﻟﱪﻧﺎﻣﺞ ﳚﺐ ﺃﻥ ﻳﻜﺮﺭ ﻫﺬﻩ ﺍﻟﻌﻤﻠﻴﺔ ﻟـC++ • ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﺑﻠﻐﺔ
ﻭﰲ ﻛﻞ ﻣﺮﺓ ﳛﺪﺩ ﺃﻛﱪ
. ﻗﻴﻤﺔ ﻟﻜﻞ ﳎﻤﻮﻋﺔ
#include <iostream.h>
void max();
void main()
{
max();
}
void max()
{
int a,b,c;
int k,i,max;
cin>>k;
for (i=1;i<=k;i++)
{
cin>>a>>b>>c;
max=a;
if (b>max)
max=b;
if (c>max)
max=c;
cout<<"the max of group "<<i<<"= "<<max<<endl;
}
2 ﺍﻟﻨﺘﺎﺋﺞo
4 5 6
the max of group 1= 6
1 2 3
the max of group 2= 3
Press any key to continue
ﺣﻞ ﺁﺧﺮ
-4-
#include <iostream.h>
void max(int,int,int,int);
void main()
{
int x,y,z,k,i;
cin>>k;
for (i=1;i<=k;i++)
{
cin>>x>>y>>z;
max(x,y,z,i);
}
}
void max(int a,int b, int c,int i)
{
int max1;
max1=a;
if (b>max1)
max1=b;
if (c>max1)
max1=c;
cout<<"the max of group "<<i<<"= "<<max1<<endl;
( ﺑﻮﺻﺔ12 = ﻟﻴﻘﺮﺃ ﺍﳌﺴﺎﻓﺔ ﺑﺎﻟﺒﻮﺻﺎﺕ ﰒ ﻳﻄﺒﻊ ﺍﻟﻨﺎﺗﺞ ﺑﺎﻟﻘﺪﻡ ﻭﺍﻟﺒﻮﺻﺔ ﻋﻠﻤﹰﺎ ﺑﺄﻥ )ﺍﻟﻘﺪﻡC++ ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﺑﻠﻐﺔstruct • ﺑﺎﺳﺘﺨﺪﺍﻡ
#include <iostream.h>
struct distance
{
int feet;
float inche;
}s1;
void main()
{
s1.feet = 0;
cin>>s1.inche;
while(s1.inche >=12)
{
s1.feet++;
s1.inche-=12;
}
cout<<s1.feet <<"\t"<<s1.inche <<endl;
}
24 ﺍﻟﻨﺘﺎﺋﺞo
2 0
Press any key to continue
-5-
)Object – Oriented Programming in C++ (OOP
) ﺍﻟﱪﳎﺔ ﺍﻟﺸﻴﺌﻴﺔ – ﺃﻭ ﺍﻟﱪﳎﺔ ﻏﺮﺿﻴﺔ ﺍﻟﺘﻮﺟﻴﻪ – ﺍﻟﱪﳎﺔ ﺍﳌﻮﺟﻪ ﳓﻮ ﺍﳍﺪﻑ – ﺍﻟﱪﳎﺔ ﺍﻟﻜﺎﺋﻨﻴﺔ (
Class
Private Public
تدعم ++Cصفة التغليف و إخفاء البيانات عبر إنشاء أنواع جديدة تسمى بالطبقات Classesو من ثم يقوم الصف المحدد بالعمل ككائن مغلف
تماما و يستعمل كوحدة متكاملة بحيث يبقى عمله الداخلي مستورا و ال يحتاج المستعمل إلى فھم ھذا العمل المخبأ ،ينبغي أن يعرف كيفية استعماله
فقط .
توفر C++دعما فعاال إلعادة االستعمال من خالل الوراثة inheritance.يمكن إعالن نموذج جديد يكون امتدادا لصف موجود و اشتقاقا منه .
و نسمي الصف الجديد صفا مشتقا أحيانا.
إن الدالة تكون واحدة ،و لكن أطوارھا متعددة بحسب نوع الفصيلة .و ھذا ھو أحد المبادئ االقتصادية في لغة سي ++لتوفير الوقت و الجھد :
استخدام نفس الدالة لتحقيق مھام مختلفة ويختلف البرنامج المكتوب بلغة OOPعن البرنامج المكتوب باللغه التقليديه فيما يلي:
كان البرنامج التقليدي عباره عن داله رئيسيه ومجموعة دوال فرعيه ،ويتم إستدعاء الدوال الفرعيه من داخل الداله الرئيسيه حسب تسلسل
البرنامج ،كما في لغه Cالتقليديه ،أما البرامج المكتوبة بأسلوب OOPفقد أصبحت وحدة البرنامج ھي الفئة أو الصنف ) ( Classالتي تتكون
من البيانات والدوال التي تعمل على ھذه البيانات ويتم إستدعاء الدوال كعناصر لألصناف على البيانات حسب فكرة البرنامج.
في البرنامج التقليدي كان مجھود المبرمج ينصب على كود البرنامج أي سطور البرنامج التي تتولى سير العمليات بينما كانت النظره الي البيانات
نظره ثانوية ولكن أسلوب برمجة األھداف الموجھه فتعتبر البيانات جزء مھم من البرنامج .وبالتالي أصبحت لدينا مكتبه ليس فقط من الدوال بل
مكتبه من الفصائل التي تحتوي على البيانات والدوال التي تتعامل معھا ووفرت ھذه المكتبه الكثير من المجھود الذي يبذله المبرمج حيث كان يقوم
بتعريف البيانات ثم الدوال التي تتعامل معھا كل مره .وتظھر مكتبة االصناف في برمجة النوافذ حيث يوجد صنف للنافذه الرئيسيه للبرنامج بھا
جميع البيانات التي تخص النافذه وكذلك الدوال التي تتعامل مع ھذه النافذه ويوجد صنف لمربع الحوار وبھا بيانات مربع الحوار وكذلك الدوال التي
تتعامل معھا فأصبحت وحدة بناء البرنامج كبيره وليس على المبرمج كتابة كل شئ في البداية.
لذلك فقد نشأت لغة C++على بعض المفاھيم االساسية المرتبطة بمفھوم البرمجة الموجھة نحو االشياء OOP :و الذى يعتمد على ما يلى:
•الكائن : Object
عبارة عن وحدة معرف عليھا مجموعة عمليات تحوي مجموعة من البيانات تسمى خصائص أو صفات مثال طالب ،قلم ،حاسب.
كائنات نشطة )حية ) Animate Objects:وھي التي نحس فيھا فنجد لھا حركة ونشاط .
-6-
كائنات غير نشطة )غير حية ) Inanimate Objects:ھي التي ال نالحظ لھا نشاط أو حركة أو وقع أينما وجدت.
نقوم باحتواء البيانات (Data (attributesوالطرق (Methods (behaviorفي حزمة packageھي ما نطلق عليه "كائنات" Objects؛ حيث
أن بيانات وطرق أي كائن ترتبط ببعضھا ارتباط وثيق .ھذا الكائن يتميّز بخاصية التخفي Information Hidingنعني بالتخفي ھنا أنه بإمكان
الكائنات االتصال والتعامل مع بعضھا البعض مع عدم معرفة أحدھا كيف تك ّون اآلخر! أي أن تفاصيل التكوين ھي المخفيّة حتى عن الكائنات
نفسھا؛ فمن المؤكد أننا نعرف كيف نقود السيارة بكفاءة عالية دون معرفة تفاصيل ھندستھا .تسمى ھذه الخاصية في البرمجة بـ Abstractionأي
تجريد البيانات.
•األصناف : Classes
ھي عبارة عن أنواع تحوي مجموعة من الكائنات التي تشترك في الخصائص والعمليات مثال صنف الحاسب و صنف اإلنسان وصنف الطالب .
والصنف يمثل المواصفات العامة للكائنات التي تنتمي لھذا الصنف ،بينما الكائنات تمثل شئ قائم بذاتة أو شئ له ذاتية تنتمي لذلك الصنف.
كل ما في الوجود ھو كائن فأنا وأنت وھذه الورقة والقلم كلھا كائنات Objectولك منھا خصائص محددة ويستطيع القيام بعمليات محددة .أما
الصنف فھو مجموعة من الكائنات المتشابھة فالرجال صنف وزيد كائن منه والنساء صنف وأمل كائن منه .وكمثال آخر الصنف البرمجي" :بطاقة
دوام "الذي يحوي الطرائق المطلوبة لحساب األجر و عدد ساعات الدوام أما الكائن "بطاقة دوام سامر" والكائن "بطاقة دوام حسن" فإنھما
يستفيدان من اإلجراءات الموجودة في الصنف" بطاقة دوام" لحساب أجر سامر أو أجر حسن
•التغليف: Encapsulation
وھو من الفوائد المھمة التي يقدمھا أسلوب التصميم الكائني وھو ان تكون البيانات وإجراءات البيانات داخل غالف واحد
•الوراثة : Inheritance
ھي أن يرث صنف أو كائن معين الخصائص المعرفة في صنف آخر مما يساعد على إعادة إستخدام األصناف التي تم إنشاؤھا من قبل.
Employee
الرقم
االسم
الراتب
المسمى الوظيفي
Manager
إمتيازات
صالحيات
المقدرة على ربط مؤثر معين بداله عضو في صنف ويتم استدعاؤھا عند تطبيق المؤثر على أحد كائنات الصنف.
oالميزة:
. -1إستخدام األسلوب المستخدم في التعامل مع األصناف )األنواع( المعرفه مسبقا في التعامل مع األصناف المعرفه من قبل المستخدم.
-2أكثر وضوحا و فھما.
oشروط التحميل الزائد للمؤثرات:
. -1ال ينبغي تغيير وظيفة المؤثر عند التحميل.
-2ال ينبغي التغيير في ترتيب أولويه.
ﺍﻟﱪﳎﺔ ﺍﻟﺸﻴﺌﻴﺔ :ﻫﻲ ﺃﺳﻠﻮﺏ ﺟﺪﻳﺪ ﻟﻠﱪﳎﺔ ﻣﻦ ﺣﻴﺚ ﺷﻜﻞ ﺍﻟﱪﻧﺎﻣﺞ ﻭﻣﻦ ﺣﻴﺚ ﻭﺣﺪﺓ ﺑﻨﺎﺀ ﺍﻟﱪﻧﺎﻣﺞ ﻭﻣﻦ ﺣﻴﺚ ﺍﳋﺼﺎﺋﺺ ﺍﳉﺪﻳﺪﺓ ﺍﻟﱵ ﺗﺴﻤﺢ ﻬﺑﺎ
ﻫﺬﺍ ﺍﻷﺳﻠﻮﺏ ،ﺣﻴﺚ ﻳﻌﺘﱪ ﺑﻨﺎﺀ ﺍﻟﱪﻧﺎﻣﺞ ﻫﻲ ﺍﻟﻔﺌﺔ ) (Classﺍﻟﱵ ﺗﺘﻜﻮﻥ ﻣﻦ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻭﻣﻌﻬﺎ ﺍﻟﺪﻭﺍﻝ ﺍﻟﱵ ﺗﻌﻤﻞ ﻫﺬﻩ ﺍﻟﺒﻴﺎﻧﺎﺕ .
Class ClassName
{
Private :
Private Data and Functions
Public :
Public Data and Functions
;}
-8-
ﻃﺎﻟﺐ ﻃﺎﻟﺐ ﺍﻟﺼﻔﺎﺕ :ﺍﺳﻢ ﺍﻟﺼﻨﻒ
ﺍﻟﺼﻔﺎﺕ : ﺍﻟﺼﻔﺎﺕ :
أغراض
20 ﺃﲪﺪ ﺍﻟﻌﻤﺮ ﺍﻻﺳﻢ
ﲣﺮﺝ ﲣﺮﺝ
ﻃﺎﻟﺐ
ﺍﻟﺼﻔﺎﺕ :
20 ﺃﲪﺪ
ﻋﻠﻮﻡ 80
ﺍﻷﻓﻌﺎﻝ :
ﺭﺳﻮﺏ ﳒﺎﺝ
ﲣﺮﺝ
-9-
ﺍﳌـﻌـﻨـﻰ ﺩﺭﺟﺔ ﺍﳊﻤﺎﻳﺔ
ﺗﻌﲏ ﺃﻥ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺧﺎﺻﺔ ﻬﺑﺬﻩ ﺍﻟﻔﺼﻴﻠﺔ ﻭﻻ ﳝﻜﻦ ﺍﻟﻮﺻـﻮﻝ
Private
ﺇﻟﻴﻬﺎ ﺇﻻ ﺑﻮﺍﺳﻄﺔ ﻫﺬﻩ ﺍﻟﻔﺼﻴﻠﺔ.
ﺗﻌﲏ ﺃﻥ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﱵ ﺗﻠﻴﻬﺎ ﻋﺎﻣـﺔ ،ﻭﳝﻜـﻦ ﻷﻱ ﺩﺍﻟـﺔ
Public
ﺍﻟﻮﺻﻮﻝ ﺇﻟﻴﻬﺎ ﻭﺍﺳﺘﻌﻤﺎﳍﺎ .
ﺗﻔﻴﺪ ﰲ ﺣﺎﻟﺔ ﺗﻮﺭﻳﺚ ﺍﻟﻔﺼﻴﻠﺔ ،ﺣﻴﺚ ﻳﺴﻤﺢ ﺑﺎﻟﻔﺼـﺎﺋﻞ
Protected
ﺍﻟﱵ ﻭﺭﺛﺖ ﺑﺎﺳﺘﻌﻤﺎﻝ ﺃﻋﻀﺎﺀ ﺍﻟﻔﺼﻠﻴﺔ ﺍﻷﺳﺎﺳﻴﺔ .
- 10 -
: • ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﳛﺴﺐ ﺣﺎﺻﻞ ﲨﻊ ﻭﺿﺮﺏ ﻋﺪﺩﻳﻦ
#include <iostream.h>
class num
{
private :
int a,b;
public :
void set_data(int x,int y)
{
a=x;
b=y;
}
void show_number()
{
cout<<"the sum of number = "<<a+b<<endl;
cout<<"the multiplication of number = "<<a*b<<endl;
}
}num1;
void main()
{
int n1,n2;
cin>>n1>>n2;
num1.set_data (n1,n2);
num1.show_number ();
}
5 4 ﺍﻟﻨﺘﺎﺋﺞo
the sum of number = 9
the multiplication of number = 20
Press any key to continue
- 11 -
π =3.14 2 π r= ﻭﺍﶈﻴﻂπ r2 = ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻟﻴﺤﺴﺐ ﻣﺴﺎﺣﺔ ﻭﳏﻴﻂ ﺍﻟﺪﺍﺋﺮﺓ ﻋﻠﻤﹰﺎ ﺑﺄﻥ ﺍﳌﺴﺎﺣﺔclass • ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﻔﺼﺎﺋﻞ
#include <iostream.h>
class circle
{
private :
float r;
double area1,circum1;
public :
void area(float r1)
{
r=r1;
area1=3.14*r*r;
cout<<"the area = "<<area1<<endl;
}
void circum()
{
circum1=2*3.14*r;
cout<<"circle circum = "<<circum1<<endl;
}
};
void main()
{
circle ob1;
float n ;
cin>>n;
ob1.area(n);
ob1.circum ();
}
10 ﺍﻟﻨﺘﺎﺋﺞo
the area = 314
circle circum = 62.8
Press any key to continue
- 12 -
: • ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﳊﺴﺎﺏ ﺍﳌﺜﻠﺚ ﻣﻦ ﺍﻟﻌﻼﻗﺔ ﺍﻟﺘﺎﻟﻴﺔ
area = s( s − a )( s − b )( s − c )
ﺣﻴﺚ ﻫﻲ ﺃﺿﻼﻉ ﺍﳌﺜﻠﺚa,b,c
a+b+c
s=
2
#include <iostream.h>
#include <math.h>
class triangle
{
private :
float a,b,c,s,area;
public:
void set_data(float a1,float b1,float c1)
{
a=a1;
b=b1;
c=c1;
s=(a1+b1+c1)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
}
void show_data()
{
cout<<"the area of triangle = "<<area<<endl;
}
};
void main()
{
triangle ob1;
float n1,n2,n3;
cin>>n1>>n2>>n3;
ob1.set_data(n1,n2,n3);
ob1.show_data ();
}
10 10 10 ﺍﻟﻨﺘﺎﺋﺞo
the area of triangle = 43.3013
Press any key to continue
- 13 -
. ﻟﻴﻘﺮﺃ ﺍﻟﺰﻣﻦ ﺑﺎﻟﺜﻮﺍﱐ ﰒ ﻳﻄﺒﻊ ﺍﻟﺰﻣﻦ ﻣﻘﺎﺳﹰﺎ ﺑﺎﻟﺴﺎﻋﺎﺕ ﻭﺍﻟﺪﻗﺎﺋﻖ ﻭﺍﻟﺜﻮﺍﱐ ﺍﳌﺘﺒﻘﻴﺔC++ • ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﺑﻠﻐﺔ
#include <iostream.h>
class timer
{
private :
int s,m,h;
public:
void time (int x)
{
s=x;
m=h=0;
while (x>=60)
{
m=m+1;
x=x-60;
}
while (m>=60)
{
h=h+1;
m=m-60;
}
cout<<h<<":"<<m<<":"<<x<<endl;
}
}ob1;
void main()
{
int n1;
cin>>n1;
ob1.time (n1);
}
3735 ﺍﻟﻨﺘﺎﺋﺞo
1:2:15
Press any key to continue
- 14 -
ﺩﻭﺍﻝ ﺍﻟﺒﻨﺎﺀ )(Construction Functions
ﻫﻲ ﺩﻭﺍﻝ ﲢﻤﻞ ﺍﺳﻢ ﺍﻟﻔﺼﻴﻠﺔ ﻭﺗﺴﺘﺨﺪﻡ ﰲ ﺇﻋﻄﺎﺀ ﻗﻴﻢ ﺍﺑﺘﺪﺍﺋﻴﺔ ﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﻔﺼﻴﻠﺔ ﺃﻭ ﺗﻨﻔﻴﺬ ﳎﻤﻮﻋﺔ ﺳﻄﻮﺭ ،ﺣﻴﺚ ﺃﻬﻧﺎ ﺗﻨﻔﺬ ﺗﻠﻘﺎﺋﻴﹰﺎ ﲟﺠﺮﺩ ﺇﻋـﻼﻥ ﻫـﺪﻑ
ﻟﻠﻔﺼﻴﻠﺔ .ﻭﻣﺜﺎﻝ ﻋﻠﻰ ﺫﻟﻚ ﺍﻟﱪﻧﺎﻣﺞ ﺍﻟﺘﺎﱄ :
>#include <iostream.h
class myclass
{
private:
;int a,b
public:
)myclass (int i,int j
{
;a=i
;b=j
}
)(void show_data
{
;cout<<"a= "<<a<<"\t"<<"b= "<<b<<endl
}
;}
)(void main
{
;)myclass ob1(5,7
;)( ob1.show_data
}
- 15 -
ﻧﻔﺲ ﺍﻟﱪﻧﺎﻣﺞ ﻓﻘﻂ ﻫﺬﺍ ﺍﻟﺘﻌﺪﻳﻞ ﺍﳌﻮﺿﺢ ﺃﺩﻧﺎﻩ
)myclass (int i=5,int j=7
{
;a=i
;b=j
}
)(void show_data
{
;cout<<"a= "<<a<<"\t"<<"b= "<<b<<endl
}
;}
)(void main
{
;)myclass ob1(15,70
;)( ob1.show_data
;myclass ob2
;)( ob2.show_data
}
ﻣﻼﺣﻈﺔ
.3ﺩﻭﺍﻝ ﺫﺍﺕ ﻗﻴﻢ ﺛﺎﺑﺘﺔ :ﻫﺬﻩ ﺍﻟﺪﻭﺍﻝ ﲢﺘﻮﻱ ﻋﻠﻰ ﻗﻴﻢ ﺛﺎﺑﺘﺔ ﻻ ﳝﻜﻦ ﺗﻐﻴﲑﻫﺎ ﻋﻨﺪ ﺍﺳﺘﺪﻋﺎﺀ ﺍﻟﺪﺍﻟﺔ ﻷﻥ ﺍﻟﺪﺍﻟﺔ ﻟﻴﺲ ﳍﺎ ﻣﻌﺎﻣﻼﺕ ﻭﻟﻜﻦ ﺳﻄﻮﺭﻫﺎ ﺗﻌﻄﻲ
)(myclass ﻗﻴﻤﹰﺎ ﻷﻋﻀﺎﺀ ﺍﻟﻔﺼﻴﻠﺔ ﻛﻤﺎ ﰲ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ :
{ ﻭﰲ ﻫﺬﻩ ﺍﻟﺪﺍﻟﺔ ﰎ ﺇﻋﻄﺎﺀ ﻗﻴﻢ ﺛﺎﺑﺘﺔ ﻷﻋﻀﺎﺀ ﺍﻟﻔﺼﻴﻠﺔ ﻣﻊ ﻋﺪﻡ ﻭﺟﻮﺩ ﻣﻌﺎﻣﻼﺕ ﺗﺴﻤﺢ ﺑﺘﻐﻴﲑ ﻫﺬﻩ ﺍﻟﻘﻴﻢ
;a=5
;b=6 • ﺍﳌﺜﺎﻝ ﻫﻮ ﻧﻔﺲ ﺍﳌﺜﺎﻝ ﺍﻟﺴﺎﺑﻖ ﻓﻘﻂ ﺍﻟﺘﻌﺪﻳﻞ ﺍﳌﻮﺿﺢ ﺃﺩﻧﺎﻩ :
}
)(myclass
{
;a=5
;b=6
}
a= 5 b= 6 oﺍﻟﻨﺘﺎﺋﺞ .
Press any key to continue .
.
)(void main
{
;myclass ob1
;)(ob1.show_data
}
- 16 -
• ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﳛﺴﺐ ﻣﺴﺎﺣﺔ ﺍﳌﺜﻠﺚ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺩﻭﺍﻝ ﺍﻟﺒﻨﺎﺀ
area = s( s − a )( s − b )( s − c )
ﺣﻴﺚ ﻫﻲ ﺃﺿﻼﻉ ﺍﳌﺜﻠﺚa,b,c a+b+c
s=
2
#include <iostream.h>
#include <math.h>
class triangle
{
private:
float a,b,c,s;
double area;
public:
triangle (float x,float y,float z)
{
a=x;
b=y;
c=z;
s=(x+y+z)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
}
void show_data()
{
cout<<"area = "<<area<<endl;
}
};
void main()
{
triangle ob1 (10,10,10);
ob1.show_data ();
}
: • ﻣﺜﺎﻝ
اﻟﻤﺜﺎل ﻓﻲ اﻟﺼﻔﺤﺔ
اﻟﺘﺎﻟﻴﺔ
- 17 -
#include <iostream.h>
class myclass
{
private :
int a,b,sum;
public :
myclass ()
{
a=5;
b=7;
}
myclass(int i,int j)
{
a=i;
b=j;
sum=a+b;
cout<<"the sum = "<< sum<<endl;
}
void show_data()
{
cout<<"a="<<a<<"\t"<<"b="<<b<<endl;
}
};
void main()
{
myclass ob1;
myclass ob2(8,8);
ob2.show_data();
}
- 18 -
: • ﻣﺜﺎﻝ ﺁﺧﺮ
#include <iostream.h>
class counter
{
private:
int i;
double d;
char c;
public :
counter(int a)
{
i=a;
cout<<"i="<<++i<<endl;
}
counter(double e)
{
d=e;
cout<<"d="<<++d<<endl;
}
counter(char h)
{
c=h;
cout<<"c="<<++c<<endl;
}
};
void main()
{
counter ob1(5);
counter ob2(6.4);
counter ob3('a');
}
i=6 ﺍﻟﻨﺘﺎﺋﺞo
d=7.4
c=b
Press any key to continue
- 19 -
ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺩﻭﺍﻝ ﻓﺎﺋﻘﺔ ﺍﻟﺘﺤﻤﻴﻞ ﻹﳚﺎﺩ ﻣﺴﺎﺣﺔ ﺍﳌﺜﻠﺚ: • ﻣﺜﺎﻝ
area = s( s − a )( s − b )( s − c )
ﺣﻴﺚ ﻫﻲ ﺃﺿﻼﻉ ﺍﳌﺜﻠﺚa,b,c
a+b+c
s=
2
# include <iostream.h>
#include <math.h>
class triangle
{
private :
float a,b,c;
double area1,s;
public :
triangle()
{
a=5;
b=5;
c=5;
s=(a+b+c)/2;
area1=sqrt(s*(s-a)*(s-b)*(s-c));
cout<<"area="<<area1<<endl;
}
triangle( float x,float y,float z)
{
a=x;
b=y;
c=z;
area1=sqrt(s*(s-a)*(s-b)*(s-c));
}
void show_data()
{
cout<<"area="<<area1<<endl;
}
};
void main()
{
triangle ob1;
triangle ob2 (10,10,10);
ob2.show_data();
}
area=10.8253 ﺍﻟﻨﺘﺎﺋﺞo
area=8.56729e+123
Press any key to continue
- 20 -
ﺩﻭﺍﻝ ﺍﳍﺪﻡ ﻭﺍﳌﺪﻣﺮﺍﺕ : Destructor Function
ﺗﻮﺟﺪ ﺩﺍﻟﺔ ﺍﳍﺪﻡ ﰲ ﺍﻟﻔﺼﻴﻠﺔ ،ﻭﺗﻨﻔﺬ ﻋﻨﺪ ﺍﳋﺮﻭﺝ ﻣﻦ ﺍﻟﻔﺼﻴﻠﺔ ﺃﻭ ﻋﻨﺪ ﺍﻻﻧﺘﻬﺎﺀ ﻣﻦ ﺍﺳﺘﻌﻤﺎﻝ ﺍﳍﺪﻑ ﺍﳌﻌﻠﻦ ﻣﻦ ﺍﻟﻔﺼﻴﻠﺔ .ﻭﻳﺴﺘﻔﺎﺩ ﻭﻣﻦ ﻫﺬﻩ ﺍﻟﺪﺍﻟﺔ ﻋﻨـﺪﻣﺎ
ﻧﺮﻳﺪ ﺗﻨﻔﻴﺬ ﺑﻌﺾ ﺍﻟﺴﻄﻮﺭ ﻋﻨﺪ ﺍﻻﺳﺘﺨﺪﺍﻡ ﻣﻦ ﺍﳍﺪﻑ ﻭﻏﺎﻟﺒﹰﺎ ﻣﺎﺕ ﺳﺘﺨﺪﻡ ﺩﺍﻟﺔ ﺍﳍﺪﻡ ﰲ ﺣﺬﻑ ﺍﳌﺘﻐﲑﺍﺕ ﻣﻦ ﺍﻟﺬﺍﻛﺮﺓ ﻭﻟﺘﻮﺿﻴﺢ ﺍﺳﺘﺨﺪﺍﻡ ﺩﺍﻟـﺔ ﺍﳍـﺪﻡ
ﻧﺴﺘﺨﺪﻡ ﺍﳌﺜﺎﻝ ﺍﻟﺘﺎﱄ ﻭﻫﻮ ﺇﳚﺎﺩ ﻣﺴﺎﺣﺔ ﺍﳌﺜﻠﺚ -:
>#include <iostream.h
>#include<math.h
class triangle
{
private :
;float a,b,c
;double s
public :
)triangle (float x,float y,float z
{
;a=x
;b=y
;c=z
;s=(a+b+c)/2
}
)(void area
{
;))cout<<"area="<<sqrt(s*(s-a)*(s-b)*(s-c
;cout<<endl
}
)(~triangle
{
cout<<"Destructor
;"<<"a="<<a<<"\t"<<"b="<<b<<"\t"<<"c="<<c<<endl
}
;}
)(void main
{
;)triangle ob1(10,10,10
;)( ob1.area
}
area=43.3013 oﺍﻟﻨﺘﺎﺋﺞ
Destructor a=10 b=10 c=10
Press any key to continue
- 21 -
. ﻭﺫﻟﻚ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺩﺍﻟﺔ ﺍﳍﺪﻡ. ﺑﻮﺻﺔ12= ﻟﻴﻘﺮﺃ ﺍﳌﺴﺎﻓﺔ ﺑﺎﻟﺒﻮﺻﺎﺕ ﰒ ﻳﻄﺒﻊ ﺍﻟﻨﺎﺗﺞ ﺑﺎﻷﻗﺪﺍﻡ ﻋﻠﻤﹰﺎ ﺑﺄﻥ ﺍﻟﻘﺪﻡC++ • ﺍﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﺑﻠﻐﺔ
#include <iostream.h>
class distance
{
private :
double feet,inch;
public :
distance(float x)
{
inch=x;
feet=0;
}
void dis()
inch=inch-12;
{
while (inch>=12)
{
inch-=12;
feet+=1; }
cout<<"feet="<<feet<<"\t"<<"inch="<<inch<<endl;
} feet=feet+1;
~distance()
{
cout<<"Destructor"<<"\t"<<"inch="<<inch<<"\t"<<"feet="<<feet<<end
l;
}
};
void main()
{
int n1;
cin>>n1;
distance ob1(n1);
ob1.dis();
}
25 ﺍﻟﻨﺘﺎﺋﺞ •
feet=2 inch=1
Destructor inch=1 feet=2
Press any key to continue
- 22 -
: Arrays as Class Data Member ﺍﺳﺘﺨﺪﺍﻡ ﺍﳌﺼﻔﻮﻓﺎﺕ ﰲ ﺍﻷﺻﻨﺎﻑ
( ﻓﺎﳌﻜﺪﺱ ﳝﻜﻦ ﺍﻟﻨﻈﺮStack) ﻭﻟﺘﻮﺿﻴﺢ ﻫﺬﻩ ﺍﻟﻔﻜﺮﺓ ﺳﻮﻑ ﻧﺴﺘﻌﺮﺽ ﻣﻦ ﺧﻼﳍﺎ ﺍﳌﻜﺪﺱ، ﳝﻜﻨﻨﺎ ﺍﺳﺘﺨﺪﺍﻡ ﺍﳌﺼﻔﻮﻓﺎﺕ ﻋﻨﺎﺻﺮ ﻣﻌﻄﻴﺎﺕ ﰲ ﺍﻟﺼﻨﻒ
- ﻟﺬﺍ ﻓﺈﻥ ﺁﺧﺮ ﻫﺬﻩ ﺍﻟﻘﻴﻤﺔ ﻳﺘﻢ ﺇﺩﺧﺎﳍﺎ ﻫﻮ ﺃﻭﻝ ﻗﻴﻤﺔ ﳝﻜﻦ ﺍﳊﺼﻮﻝ، push ﻓﻜﻞ ﻗﻴﻤﺔ ﺗﺪﺧﻞ ﺗﺪﻓﻊ ﺳﺎﺑﻘﺘﻬﺎ ﻟﻸﺳﻔﻞ، ﺇﻟﻴﻪ ﻋﻠﻰ ﺃﻧﻪ ﺧﺰﺍﻥ ﻟﻠﻤﻌﻠﻮﻣﺎﺕ
. ﻭﺗﻌﺪ ﺍﳌﻜﺪﺳﺎﺕ ﻣﻦ ﺍﻷﺭﻛﺎﻥ ﺍﻷﺳﺎﺳﻴﺔ ﰲ ﺑﻨﻴﺔ ﺍﳌﻌﺎﳉﺎﺕ ﺍﳌﺴﺘﺨﺪﻣﺔ ﰲ ﺍﳊﺎﺳﺒﺎﺕ ﺍﻟﺸﺨﺼﻴﺔLIOF(Last In First Out) ﻋﻠﻴﻬﺎ-
1 2 3 4 5 as Input Stream
1 3 5 4 2 as Output Stream
5 sussussuuu
3 4 4
1 2 2 2 2
: • ﻣﺜﺎﻝ
#include <iostream.h>
#define max 100
class stack
{
private :
int st[max];
int top;
public :
stack()
{
top=0;
}
void push(int a)
{
st[++top]=a;
}
int pop()
{
return st[top--];
}
};
void main()
{
stack s1;
s1.push(11);
s1.push(22);
cout<<"1:"<<s1.pop()<<endl;
cout<<"2:"<<s1.pop()<<endl;
s1.push(33);
s1.push(44); 1:22 ﺍﻟﻨﺘﺎﺋﺞo
s1.push(55); 2:11
s1.push(66); 3:66
cout<<"3:"<<s1.pop()<<endl; 4:55
cout<<"4:"<<s1.pop()<<endl; 5:44
cout<<"5:"<<s1.pop()<<endl; 6:33
cout<<"6:"<<s1.pop()<<endl; Press any key to continue
}
- 23 -
ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺘﻜﺮﺍﺭﺍﺕo
#include <iostream.h>
#define max 100
class stack
{
private :
int st[max];
int top;
public :
stack()
{
top=0;
}
void push(int a)
{
st[++top]=a;
}
int pop()
{
return st[top--];
}
};
void main()
{
stack s1;
int i,j,n,k;
cin>>k;
for (i=1;i<=k;i++)
{
cin>>n;
s1.push(n);
}
for (j=1;j<=k;j++)
cout<<j<<":"<<s1.pop()<<endl;
}
5 ﺍﻟﻨﺘﺎﺋﺞo
11
22
33
44
55
1:55
2:44
3:33
4:22
5:11
Press any key to continue
- 24 -
ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﳌﺼﻔﻮﻓﺎﺕo
#include <iostream.h>
#define max 100
class stack
{
private :
int st[max];
int top;
public :
stack()
{
top=0;
}
void push(int a)
{
st[++top]=a;
}
int pop()
{
return st[top--];
}
};
void main()
{
stack s1;
int t[5];
int i,j;
for (i=1;i<=5;i++)
{
cin>>t[i];
s1.push(t[i]);
}
for (j=1;j<=5;j++)
cout<<j<<":"<<s1.pop()<<endl;
}
11 ﺍﻟﻨﺘﺎﺋﺞo
22
33
44
55
1:55
2:44
3:33
4:22
5:11
Press any key to continue
- 25 -