الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مواضيع في c++

مغلق
بدأه CoMPuTeR-SCIeNCe في 3 أغسطس 2005 · 12 رد · 1,588 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هاي

ممكن احد من الخبرا يعطيني خلفيه بسيطه او شرح عن هالشغلات الثلاث ودي اعرف شنو فايدتهم بc++
واشلون استخدمهم ابرامجي.

Polymorphism +Inheritance +Templates

ويريت لو في برنامج مكتوب كيفيه التعامل وياهم بالبرامج.

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 28 مارس 2014 في 21:19 — السبب: add tags

#2
اقتباس
هاي

وش لون ارد ... B) .

====

Inheritance الوراثة .. سهلة .... : )

Polymorphism تعدد الواجهات ... انا فهمت من هالوصلة ..

/index.php?showtopic=70136

شوف الرد رقم 14 من حسن ....

Templates وانا اضم صوتي لصوتك ... وش فايدتها ... صيغتها صعبة ... وقليل ما تستخدم ....

انا مثلك اسأل :)

تم تعديل هذه المشاركة بواسطة الشـمري في 3 أغسطس 2005 في 04:59

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#3

السلام عليكم

:)

بوشمر لوسمحت ممكن تشرحلي وراثه ب سي بلس بلس اذا اتعرفها شنو مقصود فيها

#4

السلام عليكم

:)

بوشمر لوسمحت ممكن تشرحلي وراثه ب سي بلس بلس اذا اتعرفها شنو مقصود فيها لو في وياها برنامج تطبيق عليها يريت والله

#5

وعليكم السلام :)

اعطيك الفكرة الاساسية ..

افرض عندك رجال .. فيه صفة وهو لون الوجه ..

لون وجهه :) ,وانت تحدد لون الوجه ..

class father
{
  char face_color[10];

};

تخيل هالرجال تزوج .. ورزقه الله بعيال ....

اكيد ان لون وجه ولده مثل لون وجه ابوه ... الا ما ندر ...

لكن الولد صار فيه صفة جديدة ... وهو ان لون شعره اشقر

class Boy
{
char face_color[10];
char hair_color[10];
};

افرض ان الولد هذا كبر وتزوج ورزق ببنت

وطلع لها نفس الصفات..

لكن الحفيد .. زاد بصفة ثالثة .. وهي انها انثى

class grandchild
{
char face_color[10];
char hair_color[10];
char sss[10]; 



};

الان بدل من ان تكتب كل مرة الصفات من جديد .. ليش ماتسوي وراثة

كذا

class Boy : public father
{
char hair_color[10];
};

خلاص .. الولد الحين صار عنده صفتين تقدر تكتب

Boy ahmad;
ahmad.hair_color = "blond";
ahmad.face_color = "wheaten"; :)

الان .. تسمع بالوراثة المتعددة ..

multi-Inheritance

هذه ببساطة .. كائن ياخذ الصفات من كائنين او اكثر

مثلا عندك الحفيدة ..

كتبناها كذا

class grandchild
{
char face_color[10];
char hair_color[10];
char sss[10]; 

};

نقدر نكتبها كذا

class grandchild:public father ,public Boy 
{
char sss[10]; 
};

طبعا الان الولد له نفص صفات الاب لكن هذا للمثال .. والتسهيل

عندما تتعامل مع كائن يحتوي على 10 دوال وخمس طعش متغير .. تحس بقيمة الوراثة والوراثة المتعددة

بقي امور كثير ...

لكن هذه اهم فكرة والباقي يهون ..

عندك بالمرفقات ثلاث ملفات

الاول وراثة والثاني وراثة والثاني وراثة متعددة

عندك هالرابط الممتاز للاستاذ الكبير تركي العسيري ..

http://www.dev4arabs.com/vc/ShowRecord.asp...=Article&Id=264

ولاتنسى دروس الاخ هيثم عن OOP

c.zip

تم تعديل هذه المشاركة بواسطة الشـمري في 3 أغسطس 2005 في 06:10

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#6

مشكور طال عمرررك

خشششششمك

الله كثر من امثالك ويخليك ذخر لنا ^_^

#7

موضوع رائع

جزاك الله خير

Nothing to mention except that I am Muslim

Using your brain is not bad as you think

My Blog

logo.jpg

#8

السلام عليكم ..

أحببت أن اثني على هذا الشرح المذهل .. :rolleyes:

جزاكم الله خير ..

----------------------------------------------------------------

بالنسبة إلى function Templates

قضيتها حسب ما أعرفه أنها ليست بتلك الدرجه من الصعوبه ..

حيث إنها تعمل كعمل الـoverloaded functions ، ولكنها تاخذ فنكشن وحده ولكن بعدة أنواع مختلفه ..

ومثال ..

template < class T > // or template< typename T >
T square( T value1 )
{
   return value1 * value1;
}

و الـ T هو نوع رسمي ، يستخدم كما لو كان البارامتر int , float , double , long .......

عند نداء الوظيفه راح تتم إستبدال قيمه ( التي ) بالقيمه الأصليه في الكومبايلر ..

أي مثلاً عند الكول إذا كان النوع عدد حقيقي .. راح تكون جميع البارمتر عدد حقيقي ايضاً ..

وهذا مثال بسيط من أحد المواقع ..

// Using a function template.
3      #include <iostream>
4      
5      using std::cout;
6      using std::cin;
7      using std::endl;
8      
9      // definition of function template maximum         
10    template < class T >  // or template < typename T >
11    T maximum( T value1, T value2, T value3 )          
12    {                                                  
13       T max = value1;                                 
14                                                       
15       if ( value2 > max )                             
16          max = value2;                                
17                                                       
18       if ( value3 > max )                             
19          max = value3;                                
20                                                       
21       return max;                                     
22                                                       
23    } // end function template maximum                 
24    

25    int main()
26    {
27       // demonstrate maximum with int values
28       int int1, int2, int3;
29    
30       cout << "Input three integer values: ";
31       cin >> int1 >> int2 >> int3;
32    
33       // invoke int version of maximum
34       cout << "The maximum integer value is: "
35            << maximum( int1, int2, int3 );        
36    
37       // demonstrate maximum with double values
38       double double1, double2, double3;
39    
40       cout << "\n\nInput three double values: ";
41       cin >> double1 >> double2 >> double3;
42    
43       // invoke double version of maximum
44       cout << "The maximum double value is: "
45            << maximum( double1, double2, double3 );
46    

47       // demonstrate maximum with char values
48       char char1, char2, char3;
49    
50       cout << "\n\nInput three characters: ";
51       cin >> char1 >> char2 >> char3;
52    
53       // invoke char version of maximum
54       cout << "The maximum character value is: "
55            << maximum( char1, char2, char3 )      
56            << endl;
57    
58       return 0;  // indicates successful termination
59    
60    } // end main

ويكون الناتج هكـــذا ..

Input three integer values: 1 2 3
The maximum integer value is: 3

Input three double values: 3.3 2.2 1.1
The maximum double value is: 3.3

Input three characters: A C B
The maximum character value is: C

أتمنى إني أستطعت أن أخدمك ولو بقدر بسيط ..

و منكم نستفيد دائماً ..

إستبرق C++

تم تعديل هذه المشاركة بواسطة :: إسـتبرق C++ :: في 3 أغسطس 2005 في 14:39

بسم الله الرحمن الرحيم

" أولئك لهم جنات عدن تجري من تحتهم الأنهار

يحلون فيها من أساور من ذهب ويلبسون ثيابا خضرا

من سندس و إسـتـبـرق متكئين فيها على الأرائك

نعم الثواب وحسنت مرتفقاً "

صدق ذو الجلال والإكرام

#9

طبعا حبيبنا الشمري كفى ووفى وبالنسبه لل Templates اظن انه الشرح هذا كافي جدا

http://babbage.cs.qc.edu/STL_Docs/templates.htm#T1

#10

ممكن عن طريق الtemplate أعمل دالة تلك الدالة ترجع نوع datatype زى مثلا دالة بتعمل delete لشيى محدد من الarray

فبدل ما اعملها دالة لdelete int and anthor method to delete char and so on

بعمل دالة من النوع T والT دة بيتم تحديدة بعد ذلك عند عمل calling للدالة

سأحاول أضع شرح مبسط لها ولكن اعذرونى انا مشغول طحن الفترة دى

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

#11

مشكورين يا اخوان

:: إسـتبرق C++ :: و سوناتا و eng_3llam

واسف اذا طلباتي مزعجه ^_^

#12

لكي تفهم الـ template ببساطة فهي أصلا عبارة عن overloading و أضن أنها معروفة في برمجة الكائنات الموجه، و سأعطي مثال عن overloading من نوع "إختلافات نوع الدوال" و هي كالتالي:

#include<iostream>

using namespace std;

int Overloading(int a, int b)
{
	return a+b;
}

short Overloading(short a, short b)
{
	return a+b;
}

long Overloading(long a, long b)
{
	return a+b;
}

float Overloading(float a, float b)
{
	return a+b;
}

double Overloading(double a, double b)
{
	return a+b;
}

int main()
{
	cout << "int = " << Overloading(10, 20) << endl;
	cout << "short = " << Overloading(10, 20) << endl;
	cout << "long = " << Overloading(10L, 20L) << endl;
	cout << "float = " << Overloading(10.5F, 20.5F) << endl;
	cout << "double = " << Overloading(10.5F, 20.5F) << endl;

	return 0;
}

هنا الـ overloading هي الدالة Overloading و كما نرى أن لها العديد من الأنواع و هذا ما يسمى بـ Overloaded Argument Type Differences، و علاقة الـ template هي أنها ستخصر لك إستعمال إحتمالت كل تلك الأنواع من الدوال.

Template هي إنشاء دوال و فيئات يتم تحديد نوعها عند إستعمالها مباشرة، بإستعمالها يمكن إنشاء دوال و فيئات لها بيانات يمكن إستعمالها بالعديد من الأنواع.

و الآن سنكتب نفس المثال السابقة و لكن بإستعمال template :

#include<iostream>

using namespace std;

template <class T>
T Overloading(T a, T b)
{
	return a+b;
}

int main()
{
	cout << "int = " << Overloading<int>(10, 20) << endl;
	cout << "short = " << Overloading<short>(10, 20) << endl;
	cout << "long = " << Overloading<long>(10L, 20L) << endl;
	cout << "float = " << Overloading<float>(10.5F, 20.5F) << endl;
	cout << "double = " << Overloading<double>(10.5F, 20.5F) << endl;

	return 0;
}

هنا تلاحظ أنا الشفرة أصبحة بسيطة و قليلة الأسطر، و في الـ template و كما قلت أنه يتم تحديد نوعها عند إستعمالها و الآن سأشرح المثال:

Template <class T> هنا قمنا بإنشاء template إسمها T

T Overloading(T a, T B) هذا دالة حيث أنها و كما ترى أنها من الـ template T و هنا يبدأ عمل الـ Template، و بها بارامترين أيضا من نوع Template، عندما نقوم بتحديد نوع الدالة Overloading على أنها من نوع الأعداد الصحيحة،فإنه و كأن الدالة ستصبح

int Overloading(int a, int b)
{
	return a+b;
}

و ستفهم ذلك عندما نصل إلى تحديد أنواعها.

و الآن في الدالة الرئيسية كتبنا Overloading<int>(10, 20) و هنا ستصبح الدالة كما قلت سابقا

int Overloading(int a, int b)
{
	return a+b;
}

و في السطر الذي بعدها كتبنا Overloading<short>(10, 20) و هذا يعني أنه و كأننا كتبنا الدالة كالآتي

short Overloading(short a, short b)
{
	return a+b;
}

و هكذا بالنسبة لكل من long float double، و ستفهم أنه عند تحديد النوع في الدالة مثل السطر الأول في الدالة الرئيسية أنه الـ template و التي هي:

T Overloading(T a, T b)
{
	return a+b;
}

يتم تغير معرف الـ template و الذي هنا هو T إلى النوع الذي يتم تحديده، يعني في المثال الأول و الذي هو:

cout << "int = " << Overloading<int>(10, 20) << endl;

هو أن الـ T الموجودة في جميع أجزاء الدالة يتم تغيرها إلى int و هكذا بالنسبة للباقي، يعني حسب تحديدك للنوع.

هذا المفهوم الأساسي لها - و من يريد التقدم بها فليبلغني

#13

شكرا GameDev4Arab

ممكن تعطينا امثله للتقدم ب Templetes

وجزاك الله الف خير...

هذا الموضوع مغلق.

مواضيع مشابهة