المساعد الشخصي الرقمي

عرض الإصدار الكامل : السؤال الآن ماهو OOP ؟


www888
10/03/2005, 09:40 PM
بسم الله الرحمن الرحيم



الحمد لله والصلاة والسلام على رسول الله محمد صلى الله عليه وسلم وبعد ...



السؤال الآن ماهو OOP ؟



كثير من الناس قد يخلط في هذا المفهوم ونظراً لتعدد ماقيل عن هذا المفهوم فأحببت أن اشارك بما لدي من معلومات فلقد حصل لبس عند بعضهم وتعددت الأسئلة حول هذا المفهوم فمنهم من ربطه مباشرة بلغة php ومنهم من ربطه بأشياء اخرى متعددة وهي في حقيقة الأمر ليس لها علاقة بما ذكر عنها ...







وللتوضيح اكثر فإنه في عام 1971 ميلادي تم إنشاء لغة السي وهي لغة غنية عن التعريف ولكن تتصف بالإجرائية أي بإختصار تتصف بأنها تعتمد في مبدأها على البرمجة الهيكلية أي متغيرات وهياكل ودوال لا أكثر...



وبعد مرور زمن على هذا النوع من البرمجيات جاء مفهوم البرمجة الكائنية المنحى وهي (Object Orianted Programming)



كما يترجمونها وذلك على يد (بيجرن ستروسترب) في عام 1983 ميلادي



وظهرت بعد ذلك لغة سي++ وهي تطوير للغة سي أضيف اليه دعم OOP



ومن ذلك الوقت انطلق هذا المفهوم بين المبرمجين وصار سائداً..







بالنسبة لي فإختصار OOP هو كالتالي



OOP = علم الوراثة + لغة برمجة



أي بإختصار أن OOP ليست مقتصرة على لغة سي++



.................................................. ...............................



ولكن أين المعنى في هذا الكلام ؟



عزيزي كل ماذكرته الآن هو مجرد نبذة تاريخية ولكن OOP ليست كائن جاء من الفضاء او من مكان بعيد في مجرد مفهوم سهل فقط يدرج تحت قاعدة :



(أي شئ في الكون له صفات ووظائف)



فكل ماعليك هو حفظ هذه العبار كأسمك ثم اترك الفهم علي



اذا رأينا القاعدة بشكل جيد فسترى ان هناك كلمة (صفات)



وهذه الصفات تكون في الشئ ولا يستطيع ان يفارقها مثل



الإنسان فهو من الأشياء الموجودة في الكون ولكن السؤال ماهي صفاته .



أنا عندما أقول إنسان فأنا اذكر شئ عام..



ولكن الصفات في اي انسان والتي لا يستطيع ان يتركها مثل اللون عدد الأرجل عدد الأيدي .



فإذا اتفقنا على هذه الصفات فتعال وخذ مثال اخر من الصفات مثل السيارة فمن صفاتها عدد الكفرات ولونها وموديلها ورقم لوحتها والحجم... إلخ



فأنظر الآن (الإنسان والسيارة) من الأشياء الموجودة في الكون وذكرنا بعض من صفاتها ويمكنك ان تضع اي شئ امامك وتخرج صفاته بنفسك.



هذه الصفات في عالم البرمجة تسمى (Propertes) أي خصائص ويتم تمثيل بالمتغيرات في لغات البرمجة (Variables) .



ولتتضح الصورة فبعد ان تخرج صفات اي شئ او خصائصه (وهي الأشياء التي لايمكن ان تنفك عنه كما اتفقنا في القاعدة) فإنه يمكنك التعبير عنها بالمتغيرات في أي لغة برمجة تستخدمها ففي مثال السيارة مثلاً يمكنني أن اعبر عن تلك الصفات او الخصائص (بلغة سي مثلاً) كالتالي:
[شفرة]



int car_size;



char* car_color;



[/شفرة]



فأنا الأن لدي خاصيتين من خصائص أو صفات السيارة وهي حجمها ولونها ...



وأرجوا أن تكون وصلت فكرت الخصائص والصفات والتي يتم تمثيلها بالمتغيرات.







أما الجزء الثاني في القاعدة فهو كلمة (ووظائف)؟



بالطبع لن اخرج عن مثال الإنسان والسيارة لكي لايحصل تشتت ذهني ..



المهم...



رأينا صفات وخصائض الإنسان وعرفنا ماهيتها



أما الوظائف فهي الأشياء التي يستطيع ان يعملها الكائن.



فمثلاً الإنسان له العديد من الوظائف وهي اشياء ليست مرتبطة به ويستطيع عملها في اي وقت اي هي ليست كاليد معه طوال الوقت .



فمن وظائف الإنسان : الجري والأكل والشرب والنوم والحركة والمشي والتوقف وغيرها الكثير ...



ومن وظائف السيارة : زيادة السرعة وخفضها و إيقاف السيارة كلياً وغيرها مثل تشغيل المنبه ....







المهم يطلق على الوظائف في لغات البرمجة (functions)



ويتم تمثيلها (اي الوظائف) بإستخدام مايسمى الدوال.



فمثلاً لزيادة سرعة السيارة إلى سرعة معينة فأنا سأحتاج لشئ كهذا:



[شفرة]



void set_car_speed(unsigned int speed);



[/شفرة]



فأنظر إلى هذه الدالة او الوظيفة فهي تأخذ بارامتر واحد تعطى فيه السرعة للسيارة أو تحدد فيه السرعة بشكل اصح.







وبعد هذا الكلام الطويل تأتي الخلاصة المهمة وهي ان OOP جاءت ببرمجة الكائنات ولكن ماهي الكائنات المقصودة ؟



اذا رجعت الى القاعدة التي ذكرناها فستجد كلمة (اي كائن)



بإختصار الكائن في البرمجة يمكنك اخذه من القاعدة فالقاعدة تقول صفات ووظائف والبرمجة تقول ان الكائن متغيرات (variables) و دوال (functions)



ولتمثيل كائن كالسيارة في لغة C++ مثلاً فسأكتب :



[شفرة]



class Car



{



int car_size;



char* car_color;



public:



void set_car_speed(unsigned int speed);



};



[/شفرة]



انظر الى الكائن Car الآن فهو يتماشى مع القاعدة تماماً ويمكنك كتابة الكائن حسب ماتقتضيه قواعد لغتك فيمكنك كتابته في C++ او php او ... الخ.



لذلك اذا اردت ان تبرمج كائن (Object) قوي وممتاز بنفس الوقت فكل ماعليك هو ان تقوم بأخذ الشئ الذي ستصنع منه هذا الكائن مثل السيارة مثلاً وتقوم بالوقوف امامها وتسجل في ورقة جميع الصفات التي تراها عينك ثم تقوم بكتابة جميع الوظائف التي تقوم بها السيارة وبعد ذلك



قم تفصيل هذه الأشياء ودراستها بشكل منطقي ثم حولها حسب القاعدة التي ذكرنها الى كائن يتماشى مع لغتك فلو اردت ان اكتب كائن السيارة بلغة php فسأكتب شئ كالتالي :



[شفرة]



class Car



{



$car_size;



$car_color;



function set_car_speed($speed) {...};



}



[/شفرة]



فالمفهوم واحد ولكن الذي يختلف هو لغة البرمجة



وأرجوا أن أكون قد وفقت في إيصال الفكرة للجميع وأسف إن حصل مني خطأ أو تقصير ...



وهذا مالدي الآن فإن أخطأت فمن نفسي والشيطان وإن أصبت فمن الله جل وعلا

فنكشن
10/03/2005, 10:32 PM
أهلا بك اخي العزيز

موضوع جميل ورائع ،، نفسي اعرف ايش سر المواضيع البرمجية اليوم في السبله نازله نزله وحده !! لكن اتمنى ان تكثر هذه المواضيع في السبلة وباقي المنتديات العمانية ..

ما رأيك ان تزور المنتدى الموجود في توقيعي ،، به منتديات برمجيه عمانية 100 %

لك تحياتي

oman001
10/03/2005, 10:46 PM
مشكور اخي على المعلومة عن OOP
على الرغم انها غير واضحه في اذهان بعض المبتدائن في البرمجة


ومنكم نستفيد

processor
11/03/2005, 12:57 AM
لك جزيل الشكر أخي الفاضل على هذا التوضيح و المعلومة الرائعة جعله الله في ميزان حسناتك يوم القيامة الله يحفظك و يحفظ الجميع
تقبل تحياتي processor