منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : البرمجة بالكائنات الشيئية (2)
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
كاتب الموضوع : tibo


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

[SIZE=4]على طلب احد الاعضاء اردت ان اتعمق و اشرح البرمجة بالكائنات الشيئية

نبدأ بسم الله
[/SIZE]

معنى البرمجة الشيئية :: oop

هي عبارة عن أسلوب جديد من أساليب البرمجة حيث أصبحت وحدة بناء البرنامج هي الصنف class والذي يحوي على البيانات data والعمليات ( الدوال ) functions .
ولها عدة مسميات منها ..::
1- البرمجة غرضية التوجة .
2- البرمجة الكائنية الموجهة .


أسلوب البرمجة الشيئية :.
عادة ما تكون البرامج من هذا الأسلوب معقدة بشكل كبير حيث تقسيم البرنامج إلى مجموعة من المهام الرئيسية ومن ثم تقسم إلى مهام فرعية على حسب درجة التعقيد للمهام الرئيسية لذلك فان البرمجة الهيكلية تنتهج النهج ( من الأعلى إلى الأسفل ) Top Down .


عيوب هذا الأسلوب : البرمجة الهيكلية .::
1- صعوبة فصل البيانات على العمليات .
2- إعادة إنشاء الحلول وعدة إعادة استخدامها .


المفاهيم الأساسية للبرمجة الشيئية :.

1- الكائن Object :

عبارة عن وحدة تحوي مجموعة من البيانات تسمي ( خصائص ) properties أو صفات ومعرفة عليها مجموعة من العمليات .
مثال .:: كائن السيارة .:


الخصائص :
Model :Ferrari
Color : Blue
Year : 2005


العمليات ::.
Start ' الانطلاق '
Stop ' التوقف '
Accelerate 'التسارع'


2- الصنف Class :
الكائنات ذات الخصائص والأفعال المشتركة بحاجة لآن تجمع مع بعضها البعض حتى يمكن استخدامها في برنامج ما.
وبالتالي فإن الصنف : عبارة عن مجموعة من الكائنات التي تشترك في الخصائص والعمليات ..
مثلاً ..::
الطالب كائن >> الطلاب صنف .
الموظف كائن >> الموظفين صنف .


مزايا البرمجة الشيئية :. (Features of opp)

1- التجريدabstraction : وهو عملية تحديد الخصائص والعمليات التي تنتمي لصنف معين وهي نوعان .::

أ- تجريد البيانات Data abstraction : وهي عملية التعرف على الخصائص المرتبطة بكائن معين .
ب- تجريد العمليات Methods abstraction: وهو عملية تحديد العمليات والإجراءات دون ذكر شيء عن كيفية أدائها .

2- التغليف ( الكبسلة )Encapsulation : هي عملية تجميع كل الخصائص properties والطرق ( العمليات ) Methods في وحدة واحدة ( داخل غلاف واحد ) حيث لا يمكن الوصول إليها ( أي الخصائص والطرق ) إلا عن طريق الكائن .

3- إخفاء البيانات Data Hiding:. وهي ميزة ناتجة عن كبسلة البيانات وتعني إضافة مستوى حماية معين على البيانات حتى نمنع وصول الخطأ إليها .

4- الوراثة Inhertance:. وهي أن يرث صنف ما الخصائص والعمليات الموجودة في الصنف الآخر مما يساعد على إعادة الاستخدام للأصناف التي تم إنشاؤها من قبل المستخدم . .

5- تعدد الأشكال ( الأوجه ) polymorfisme: تسمح ميزة تعدد الأشكال لنفس الدالة أن تتعرف بصورة مختلفة في أصناف مختلفة .
ويمكن عمل ذلك بـ الوراثة مع تعدد الأشكال .
واللغات التي تدعم أسلوب البرمجة الشيئية كثيرة نذكر منها ..
C++ و java و C# و vb.net


الأصناف Classes :


تعريف الصنف : هو عبارة عن وحدة تحوي مجموعة من البيانات ( الخاصة والعامة )بالإضافة إلى تعريف الدوال ( العمليات ) حيث يطلق على الدوال المعرفة داخل الصنف بـ " أعضاء دالية " member Function .



تعريف الكائنات .::


يتم تعريف الكائنات في البرنامج الرئيسي وفقاً للصيغة التالية :


كود :
[FONT=Courier New][color=blue]class_name object_name[/color][/FONT]


حيث :

class_name : اسم الصنف ( نفس اسم الصنف الذي كتبناه في بداية البرنامج )
object_name : اسم الكائن ، وهو اختياري ، يستخدم للوصول لعناصر الصنف .


مثال.::

كود :
[FONT=Courier New][color=blue]rectangle rect;[/color][/FONT]


حيث

rectangle اسم الصنف ، و rect اسم الكائن .

وإذا أردنا أن نعرف أكثر من كائن بنفس الوقت ، نفس العملية السابقة ، فقط نفصل بين كل كائن والآخر باشارة الفاصلة ( , ) . والمثال التالي يوضح ما سبق .::

كود :
[color=blue][FONT=Courier New]rectangle rect1,rect2,rect3;[/FONT][/color]


استدعاء الأعضاء :.


أعضاء الصنف لا يمكن أن نصل إليها من خارج الصنف إلا عن طريق الكائنات ويتم ذلك بالصيغة التالية :


كود :
[FONT=Courier New][color=blue]Object_name.member[/color][/FONT]

حيث .::

Object_name :
اسم الكائن .
member : اسم العضو الذي نريد الوصول إليه .


مثال :
إذا أردنا الوصول للدالة area() باستخدام الكائن rect نكتب الآتي :

كود :
[FONT=Courier New][color=blue]rect1.area()[/color][/FONT]

مؤثر دقة الوصول Scope Resolution Operator


عبارة عن مؤثر يستخدم عندما تكتب تفاصيل الدالة العضو خارج الصنف .

الصيغة العامة للدالة التي تكتب خارج الصنف هي :


كود :
[FONT=Courier New][color=blue]DataType ClassName::FunctionName (Function Arguments )[/color][/FONT]
والسلام عليكم
ان شاء الله في دروس قادمة