[مقال]ماهي البرمجة باستخدام الكائنات ؟
بسم الله الرحمن الرحيم :)
في هذه الأيام الكثير من اللغات تدعم البرمجة باستخدام الكائنات Object-Oriented Programming ، مثل
++C
Java
JavaScript
#C
VB.NET
Python
Ruby
PHP
Objective-C
تبدأ جذور البرمجة الكائنية من بداية لغة الـ Simula في عام 1960 ، عندما بدأت شركات هندسة البرامج بمناقشة أمر سموه "فوضا البرامج" ، عندنا كانت البرامج تزداد بشكل مذهل و كان الكود يكبر و يكبر ، سألو أنفسهم "كيف يتم صيانة البرنامج ؟"
ففعلا هالسؤال محير ، تخيل انك انت مع 20 مبرمج كتبتو برنامج لشركة كبرى و كود البرنامج 20000 ألف سطر ، اشلون تسوون صيانة للبرنامج ؟؟
من هنا ظهرت البرمجة الكائنية ، حيث ان البرنامج يجمن كائنات مفصولة عن بعضها ليشكل برنامج واحد كامل من كائنات تتفاعل مع بعضها و لكن أكوادها مفصولة تماما عن بعضها :)
فالبرمجة الكائنية تجعل الكود مرتب جدا مثل ما قمت ، و تجعلها اوظح و اسهل لإعادة الصيانة ، و زيادة على ذلك ، يمكن استخدام كائنات هذا البرنامج لبرنامج آخر
و هذي عناصر البرمجة الكائنية :
1-Class : و اهو تماما مثل خريطة البيت قبل لا ينبني ، يحتوي على كل مميزات الكائن اللي راح يستخدمه المبرمج
2-Object : بعد ما تخلص من كتابة الـ Class ، تسوي الكائن مبني على الـ Class. الـ Class كأنه اهو المخطط للبيت ، و الـ Object اهو البيت نفسه
3-Methods : او حتى يسمونه Class Function ، و اهو مثل اي دالة (function) تكتبها للبرنامج ، لكن هذي الدالة تستحدم للتعامل مع بيانات الـ Class
4- Inheritance : و اهو التوارث ، هذي الميزة تمكنك من إنشاء Class مبني على Class آخر. مثلا ، إذا انت كنت مسوي Class يحتوي على خصائص سفينة فظائية ، تقدر تسوي كلاس اسمه Fighter و Defender ، و هذول الكلاسات يسمونهم child class او sub class.
5- Polymorphism : (تعدد الأشكال) و اهو يعطي نتائج مختلفة على حسب عمل البرنامج :)
و هذا مثال انا سويته بالـ ++C للبرمجة باستخدام الكائنات :) :
كود:
#include <iostream>
#include <string>
#include <conio.h>
using namespace std;
class Bow
{
//Beginning private section
private:
//Data members
string color;
bool drawn;
int numOfArrows;
//Beginning public section
public:
//Methods
void draw();
int fire();
Bow(string aColor); //Constructor
~Bow(); //Destructor
};
Bow::Bow(string aColor)
{
aColor = color;
}
Bow::~Bow()
{
//Nothing to clean up
}
void Bow::draw()
{
drawn = true;
cout << "The " << color << " has been now drawn." << endl;
}
int Bow::fire()
{
if (!drawn)
{
cout << color << " has not been drawn "
<< "and therefore you cannot fire." << endl;
return 0;
}
int score;
score = rand() % (10-0+1) +0;
if (score == 0)
cout << color << " missed the target!!!" << endl;
else
cout << color << " scored " << score
<< " points!!!" << endl;
return score;
}
//Main function
int main()
{
//Creating object derived from Bow class
Bow b1("red");
getch();
return 0;
}
و السلام عليكم و رحمة الله و بركاته :)
رد: [مقال]ماهي البرمجة باستخدام الكائنات ؟
السلام عليكم ورحمة الله وبركاته
- شكراً جزيلاً اخي GOGENDANTESS علي هذه المقاله الرائعة ، وفعلاً البرمجة الكائنية هامة جداً وتسهل كثيراً من عملية التعديل والتطوير والصيانه -كما قلت- وهي هامه جداً في عملنا - تصميم الألعاب - لأن اللعبة هي عبارة عن كائنات .
- وأنت تذكرني بكتاب " نحو برمجة كائنية التوجه " في الفيجوال بيزك لمبدع الفيجوال بيزك الأستاذ تركي العسيري .... وأحب بهذه المناسبة أضع رابط الكتاب :
http://www.khayma.com/stareast/books/book4/VBbook.zip
وشكراً.
(AFE)
رد: [مقال]ماهي البرمجة باستخدام الكائنات ؟
تسلم على المقال
مستقبل البرمجة سيكون عباره عن كائنات وهذه الطريقة تسهل علينا فهم الكود
وبما اني مبرمج بالجافا فأعتبر الكائنات(oop)هي روح هذه اللغة
---
أما بالنسبة للألعاب فالكائنات تكاد تكون شي أساسي والقيم ميكر أوضح مثال
عندي سؤال ع الكود (( أنا ضعيف في سي++ ولكني قوي فالجافا ))
في Constructor
المفروض نكتب
aColor=color
أو
color=aColor
؟؟؟
وتسلم AFE ع الكتاب
وبالتوفيق
رد: [مقال]ماهي البرمجة باستخدام الكائنات ؟
مشكور اخوي الكفراوي على ردك :)
=============
من التراب :
بالفعل فالألعاب كلها كائنات برمجية :) فمثلا المدينة اهي كائن ، الصندوق اللي فيه الذهب اهو كائن .... إلخ :)
اما عن سؤالك ، فأنت الصحيح ، كان في غلط في الكود ما عليش :D ، فلما تعين فيمة للـ data member ، الـ data memeber يأخذ الأولولية في التعريف :)
سوري على الغلط :) لكن مع هذا الكود قابل للـ compilation بس هالحالة نسميه buggy class :) بالعربية الفصحى :D :
مخطط ذو ثغرة :D
رد: [مقال]ماهي البرمجة باستخدام الكائنات ؟
لتحاشي هذي المشكلة الـ ++C توفر طريقة احسن بوايد تسمى طريقة اللستات :)
مثل هذي :
كود:
//Constructor
Bow(string aColor): color/* << this is data member*/(aColor) {}
:)
رد: [مقال]ماهي البرمجة باستخدام الكائنات ؟
اخي GOGENDANTESS انا متعود من صغري على procedural programming و من زمان ابرمج صفحات الويب بهذي الطريقة لأني ما جربت ابدا ادخل على الكائنات و بصراحة من فترة سنة بدأت في عالم جديد من البرمجة اول شي بالسي شارب و تعلمت الاوامر الشرطية بشكل سريع و بعض الامور و لكن بصراحة عندما حاولت بعدها اتعمق ببيئة فيجوال ستوديو دوت نيت واجهتني المشاكل الكثيرة بسبب عدم المامي بشكل كامل بالبرمجة الكائنية التوجه و بصراحة انا لا اعرف اليأس بس اجلت الموضوع بسبب عودتي لبرمجة الويب باستخدام بي اتش بي و الاي اس بي العادية و موضوع بصراحة شجعني مجددا على الدخول في عالم الفيجوال دوت نيت مجددا و لكن كما تعلم يقولون ان الشخص الذي يتعلم برمجة الكائنات ورا اسهل من مبرمج سابق مثلي يتعلمها من جديد ... فبماذا تنصحني و لك جزيل الشكر على هذه المقالة القيمة
رد: [مقال]ماهي البرمجة باستخدام الكائنات ؟
شكرا على المقاله الرائعة ^^.... اللى يفهم البرمجة الموجهه للكائنات و كيفيه بناء الخوارزميات يمكن يتعلم أى لغة برمجة حديثة بسهولة ^^....
رد: [مقال]ماهي البرمجة باستخدام الكائنات ؟
challenger : البرمجة الكائنية تجعل الكود مرتب اوظح بكثييييييييييير من طريقة الـ procedural ، و فوق ذلك ، تقدر تستخدم المخططات لبرنامج ثاني :)
صقر : العفو :) ، و البرمجة الكائنية الحين من افضل طرق البرمجة لترتيبها و سهلوتها :)
رد: [مقال]ماهي البرمجة باستخدام الكائنات ؟
لما نعامل الأوبجكت على أساس انه كائن حي راح نبدع في ذلك ^^
انا دائما احاول أن اتعامل وأتعمق في كل اوبجكت حتى لو مبرمج او مصم في برنامج على انه كائن
يحتاج لللتطور ^___^
شكرا للمقالة واستفدت بها شخصيا
رد: [مقال]ماهي البرمجة باستخدام الكائنات ؟
رد: [مقال]ماهي البرمجة باستخدام الكائنات ؟
شكرا اخي مرة اخرى للتوضيح , انا مقتنع تماما انها افضل من البرمجة العادية لكنني لم استطع الدخول لهذا النوع من البرمجة بسهولة ما زلت اواجه المصاعب :( ,,,, انا اخبرك المشكلة ... و هي انني لما نويت ادخل هالمجال اشتريت كم كتاب عربي و للاسف بدأت في كتاب اكثر من 1000 صفحة و اول 500 صفحة كانت عن سي شارب و الحمدلله ما واجهتني مصاعب لأن المصطلحات المعربة عرفتها لأني اعرف الانكليزية بس لما بدأت في فصول البرمجة كائنة التوجه بدأت بالمصاعب لأني واجهت مصطلحات جديدة بالعربي و تعرف مشاكل التعريب و المشكلة اني خلصت نص الكتاب يعني ما اقدر ارميه و ابدأ من جديد بس يلا الله يوفقني و يوفق الجميع ببقى احاول و اجتهد و ان شاء الله بتشوفوا مني اول software based on OOP قريبا , لأني بصراحة مليت من برمجة الويب ما فيها شي interesting حسبت الاجاكس شي بيسلي بس طلعت ما فيها شي خارق !