بسم الله الرحمن الرحيم
(OOP) Object oriented Programming
مقدمة :-
فى الفترة الاخيرة أصدرت شركة ميكروسوفت اصدار Microsoft Visual Studion.net الذى كان ثورة فى علم البرمجة (Software programming) حيث ظهرت بعض التعديلات و التحسينات فى اسلوب البرمجة و هى ال OOP التى سنحاول تناولها و توضيحها على قدر المستطاع بطريقة مبسطة حيث دائما ما يقترن اسم جميع اصدارات .NET بهذا اللفظ OOP.
أولا : أسباب ظهور ال OOP :-
1- التقدم الهائل فى صناعة الهاردوير و الذى لا بد ان يقابله تطور فى السوفت وير
2- الهاردوير تتكون من محموعة من الاجزاء التى يتم تصنيعها منفصلة عن بعضها و كل جزء يمكن استخدامه مرة اخرى بطريقة مختلفة و بالمثل هذه الخاصية لم تكن موجوده فى صناعة البرمجيات
3- OOP هى طريقة برمجة يكون فيه البرنامج يتكون من مجموعة من العناصر الرتبطة مع بعضها.
ثانيا خصائص ال OOP :-
1- تمثل نظام محاكاة للعالم الحقيقى
2- يمكن من خلالها تعريف انواع جديده من المتغيرات و البيانات مثل (int,Boolean,String)
3- نستطيع من خلالها اخفاء تفاصيل البرمجة (الكود ) والتى يطلق عليها Encapsulation
4- تستطيع من خلالها اعادة استخدام الكود مرة اخرى عن كريق الوراثة (Inheritance)
5- يمكن من خلالها استخدام اسم واحد يمثل عدة وظائف مختلفة (Function Overloading ,polymorphism) والتى سنناقش كل خاصية بالتفصيل فيما يأتى:
بالنسبة للخاصيتين 1,2 سوف تتضح من خلال الامثلة اللتى سوف نناقشها فيما بعد
Encapsulation:-
عندما يذهب المريض الى عيادة الى الصيدليه و يكون فى الروشته دواء على هيئة كبسول ما تراه هو عبارة عن الغطاء الخارجى للدواء و لكن باخل هذا الغطاء يوجد المادة الفعالة ة التى بمجرد دخولها الى الجسم تبدا المادة الفعالة فى التفاعل مع الجسم و هذا بالضبط ما يقصد به هنا .
حاول ان تتصفح مجلد ال (program files ) لاحد البرامج سوف يقابلك ملفات لها الامتداد DLL و هذه الملفات عبارة عن Classes تم انشاءها بواسطة مبرمج و قام مبرمج اخر باستعمالها و لكنه يعلم خصائصها فقط ولا يعلم الكود الذى بداخلها فعلى سبيل المثال الملف (shell32.dll) فهذا الملف موجود فى مجلد (C:\windows\system) هذا الملف به الكثييييييييييييييييير من الدوال التى تمنك اى مبرمج ن التفاعل مع بيئة نظام التشغيل Windows(المبرمج يستعمله ملكنه لا يعلم الكود الذى بداخه)
Inheritance (الوراثة):-
بعيدا عن الكتابة بالطريقة العلمية ( صمم احد المبرمجين اصدقائى كلاس وقال لى على الخصائص والدوالى التى يقوم بها هذا الكلاس ولكننى عندما استعملته و جد بعض الدوال التى تحتاج بعض التغيير لكى تناسب احتياجاتى فقمت بانشاء كلاس حديد و جعلت من ضمن خصائصه الخصائص الموجوده فى الكلاس الذى صممه صديقى و قمت فيه بتغيير الدوالى لكى تناسب العمل الذى اقوم به.
بالطريقة العلمية:
الوراثة تقتضى ان يكون المتغير X يشارك المتغير Y فى جميع خصائصه وفى هذه الحالة يسمى Y (الكلاس الاساسى) (Super Class) ويسمى العنصر X (Derived Class ) الكلاس الفرعى و فى بعض الاحيان نرجع الى العنصر Y كلاكلاس الأب و النصر X كالإبن و الشطل الاتى يوضج العلاقة بين العنصر Vehicle والنصر Car :
ممكن واحد يسأل سؤال مهم؟
Why should one entity inherit the structure and behavior of some other entity?
لماذا يضطر البعض الى استخدام ال inheritance فى عمله؟
لأن ال super Class تمثل بعض الخصائص بوجه عام و لذلك تستطيع ال sub class تخصيص الخصائص العامة فى ال super class مثل المثال السابق
ولكن Car عبارة عن مركبة ولها اربعة عجلات
Car inherits Vehicle Class
مما سبق يتضح الآتى:
يمكن القول ان الوراثة تمثل العلاقة بين التعميم و التخصيص
Generalization – Specialization relationship
مثا ل آخر من الطبيعة :
الحيوان Super Class
الكلب Derived class
ملحوظة هامة :
The inheritance specifies the "Is a" relationship between the subclass and the super-class
الجملة اللى فاتت انا خفت ان اترجمها فاغير من معناها
على قدر استطاعتى هذه الجملة تعنى ان الشكل الهرمى للوراثة يمثل علاقة الكينونة (هو عبارة عن) بين ال sub-class & Super-class
ملحوظة اخرى :
يمكن ان يكون الderived-Class ايضا Super-Class والشكل الاتى يوضح ذلك
لاحظ ان العلاقة تنطق من الفرعى إلى الاصلى Student "is a" person
لاحظ Is a تمثل علاقة الوراثة
أمثلة أخرى تمثل الوراثة و استخداماتها فى البرمجة
Binary Search Is a kind of search algorithm
Student is a Person
Rose Is a flower
- خاصية الوراثة تمكن ال sub-class ان ترث ال data-members , operations and properties
(يعنى من الاخر sub-class بتبقى نسخة طبق الاصل من ال super-class اذا لم تقم باضافة شئ جديد عليها)
أنواع ال Inheritance :-
كل الذى تم شرحه مسبقا يسمى ال Single Inheritance و فى هذا النوع يكون ال Sub-class ترث من كلاس واحد و لكن هناك نوع اخر Multiple inheritance و مثال على ذلك
فى هذا المثال يرث الحيوان البرمائى خصائص كلا من الحوان البرى و الحيوان المائى
Polymorphism :-
يعتبر من احد الخصائص المميزة للOOPو يتلخص تعريف هذه الخاصية فى الاتى و هو ان توجد واجهة واحدة ولكن لها عدة وظائف مختلفة
One interface and multiple implementations
Or
One name with different functionalities
مثال على ذلك دالة sum()
Sum(int,int)
Sum(double,double)
عند التعامل بواسطة الكود مع هذه الدالة يمكن اعطاء قيمتين int أو قيمتين double
مميزات الOOP :-
- Better Software Quality and lower maintenance cost.
- Program can be built from the standard working modules that communicate each other rather having to start from scratch this helps save development time
- It is easy to apportion work in a project based on entities.
- Programmers can build secure programs that can not be invaded by code in other parts of program using the principle of data hiding.
- Inheritance eliminates redundant code and extends the use of existing entities.
ما سبق يعنى بكل بساطه ان البرنامج يمكن تقسيمه الى عدة عناصر وكل مبرمج فى فريق العمل يقوم ببرمجة العنصر و فى نهاية العمل نقوم بتجميع العناصر مع بعض مثل تجميع جهاز الكمبيوتر
سوف اتوقف فى الشرح الى هذا المستوى الى ان ارى تفاعل الناس مع هذا الدرس و توضيح اذا لم اذا كان هناك نقطه غير مفهومة و توضيحها
سوف اقوم بتوضيح جميع ما سبق على لغة البرمجة Visual Basic.net ولكن بعد الانتهاء من استيعاب هذا بالتفصيل لكى نعمل على اساس سليم و نعمل بغرض الفهم
لا تنسونا بخالص الدعاء
مدح الله تعالى أهل طاعته بقوله: (إن الذين هم من خشية ربهم مشفقون، والذين هم بآيات ربهم يؤمنون، والذين هم بربهم لا يشركون، والذين يؤتون ما آتوا وقلوبهم وجلة أنهم إلى ربهم راجعون، أولئك يسارعون في الخيرات وهم لها سابقون) [المؤمنون:57-61).
