-->
U3F1ZWV6ZTM3MDQyMzIyMTQ4X0FjdGl2YXRpb240MTk2Mzg0MDI2MTg=
recent
مقالات

البرمجة الشيئية - البرمجة الموجهة Object-oriented programming - OOP

البرمجة الشيئية  - البرمجة الموجهة Object-oriented programming - OOP

البرمجة الشيئية Object-oriented programming - OOP

ويطلق عليها أحيانا اسم برمجة كائنية المنحى أو برمجة موجهة نحو الكائنات أو العناصر وهي نمط برمجة متقدم، وفيه يقسم البرنامج إلى وحدات تسمى الكائنات (Objects)، كل كائن هو حزمة (تعليب) من البيانات (المتغيرات والثوابت) والدوال ووحدات التنظيم وواجهات الاستخدام. ويُبنى البرنامج بواسطة استخدام الكائنات وربطها مع بعضها البعض وواجهة البرنامج الخارجية باستخدام هيكلية البرنامج وواجهات الاستخدام الخاصة بكل كائن. 


وهي عبارة عن أسلوب جديد من أساليب البرمجة حيث أصبحت وحدة بناء البرنامج هي الصنف class والذي يحوي على البيانات data والعمليات الدوال functions 



ولها عدة مسميات منها :


  • برمجة شيئية المنحى. 
  • برمجة موجهة 
  • برمجة كائنية 
  • برمجة كائنية التوجه 
  • برمجة غرضية التوجه 
  • برمجة كائنية المنحى 
  • برمجة بالعناصر 
  • برمجة موجهة نحو الكائنات (أو العناصر) 
  • البرمجة غرضية التوجه 
  • البرمجة الكائنية الموجهة 

لماذا OOP:

  • لسهولة التعامل مع التطبيقات الكبيرة عن طريق تجميع الوظائف المختلفة للبيانات.
  • إعادة استخدام Object في أجزاء اخري في البرنامج أو في برامج اخري وهو ما يسمي ب Inheritance.

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


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

أ- تجريد البيانات Data abstraction : وهي عملية التعرف على الخصائص المرتبطة بكائن معين .
ب- تجريد العمليات Methods abstraction: وهو عملية تحديد العمليات والإجراءات دون ذكر شيء عن كيفية أدائها 
  •  التغليف ( الكبسلة )Encapsulation : هي عملية تجميع كل الخصائص properties والطرق    ( العمليات ) Methods في وحدة واحدة ( داخل غلاف واحد ) حيث لا يمكن الوصول إليها ( أي الخصائص والطرق ) إلا عن طريق الكائن .
  •  إخفاء البيانات Data Hiding:  وهي ميزة ناتجة عن كبسلة البيانات وتعني إضافة مستوى حماية معين على البيانات حتى نمنع وصول الخطأ إليها .
  • الوراثة Inheritances:  وهي أن يرث صنف ما الخصائص والعمليات الموجودة في الصنف الآخر مما يساعد على إعادة الاستخدام للأصناف التي تم إنشاؤها من قبل المستخدم . . 

أساليب كائنية المنحى


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

  • التغليف (Encapsulation).
  • إخفاء البيانات (Data Hiding).
  • الوراثة (Inheritance).
  • تعدد الأشكال (Polymorphism).

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

الفئات والكائنات Classes and Objects

  • Classes (هيكل أو مخطط) او البناء الاساسي.
  • Objects (البنية)-أو نسخ من ال Classes-يحتوي علي Data ,Methods
  • ال Methods تعبر عن الوظائف
  • ال attributes أو data تعبر عن الصفات

يمثل فئة (Class) مفهوم واحد مثل هذا الكائن (Object)، حيث تمثل الفئة مجموعة «أصناف» من الأشياء التي وصفتها بعض البيانات، ولها نفس السلوكيات «الأنشطة» تعد وتخدم الفئة كمخطط لكائن. 

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

الكائن من هذا النوع يمكن أن يكون أي فئة الطالب الفردية في الجامعة. يمكن أن نفكر في أمثلة أخرى كثيرة مثل فئة السيارات، طبقة الطائرة، فئة الثدييات، وحلقت فئة الحيوان، وطبقة الأثاث، وأمثلة أخرى كثيرة. وبالتالي، لكي نعرف الفئة نحتاج لإعلان البيانات والأساليب التي ينبغي أن يكون كل كائن من هذا النوع. وأعلن كل بند البيانات سواء كان متغير أو ثابت، ولكل نشاط (وظيفة) يجب أن تكون ممثلة من قبل وسائل أحد أو أكثر. من الطبقة يمكننا تمثيل، الكائنات النشطة التي لها نفس المحتويات أي متغيرات البيانات والأساليب. يجب على كل كائن تعيين قيم لمتغيرات البيانات لديه. 

هذه القيم تعمل على تحديد حالة كائن تم إنشاؤه من الفئة. الأساليب التي تم تعريفها في الفئة تمثل سلوك الكائن. وفقا لذلك، في حين أن الفئة لديها البيانات والأساليب. إنشاء كائن يسمى مثيل (Instantiation). الكائن هو مثيل لفئة معينة، ونحن نستطيع إنشاء مثيل للعديد من الكائنات كما أننا بحاجة لأي برنامج معين. على سبيل المثال، فإن الكائن من فئة الطلاب التي يمكن إنشاء مثيل لها التي هي البيانات الفعلية «القيم» من اسم الطالب وعنوانه والتخصص، والمعدل التراكمي، ولها السلوكيات التي هي أساليب محددة في فئتها 

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

  • الفئة Class: وهو نموذج الوحدة الرئيسة لبناء الـكائن (Object) بمعنى أنه يتم تكوين أكثر من كائن على أساس نموذج البناء الأساسي وهو الفئة (Class)، ويمكن تشبيه الفئة بالقالب الذي يقوم بتشكيل الكائن ويمكن بعد ذلك استخدام هذا الكائن لأي غرض مطلوب.
عبارة عن القالب أو المصنع لبناء او لإنتاج أو لوصف Object – ويتكون من: Name، Attributes، Methods.




[Class <Class Name> [From|<|: <Parent Class Name>




[Attributes]




[Methods]




[Private]




[Attributes]




[Methods]
  • نستخدم كلمة From عند الوراثه.
  • نستخدم كلمة Private عند الحاجة الي تخصيص attributes أو methods لهذا ال Class فقط دون ال Objects ، حيت أن القيم المندرجة تحت اسم Private تكون غير متاحة ﻻ Objects أو Classes اخري.

ملحوظة:

مبدا التنظيم فى اللغة يجعل كل ملف source code مقسم كالتالى:
  1. الاوامر والمتغيرات العامة واستدعاء المكتبات
  2. الدوال Functions
  3. ال Classes

  • وبمجرد البداية فى ال Functions لا نعود للاوامر مرة اخرى.
  • وبمجرد البداية فى ال Classes لا نعود للاوامر او الدوال مرة اخرى.

ما علاقة ال Classes بالObjects ؟

نقول أننا نبني بنية أو أساس وهو ال Class و نضع بداخله ال Methods و ال attributes وبالتالي تكون متاحة لكل ال Objects التابعه لهذا ال Class فاذا أردنا عمل Object من هذا ال Class نضع بداخله ما نريد لهذا ال Object من ال attributes و Methods التي بداخل ال Class ولكن نضع قيم للattributes تخص هذا ال Object حتي يتم تنفيذ ال Methods بناء علي قيم ال للattributes وهذا ما يميز Object عن اخر .

مثال توضيحي: انا وانت عبارة عن كائن (Object) من النوع البشري (Class).

انا ك Object لدي صفات خاصة بي مثل (الاسم والسن والعنوان،…الخ) وكذلك لدي وظائف مثل (الاكل والشرب والحركة،العمل،…..).
انت ك Object لديك أيضا صفات ووظائف خاصة بك قد تتشابه معي أو تختلف.

وبالتالي يوجد Class اسمه Human كهيكل أو مخطط عام لكل الناس ثم يندرج منه الكثير من ال “Objects” – نسخ من ال class- تختلف في الصفات والوظائف، مثل أنا وانت- لنا صفات ووظائف خاصة بنا.

ملحوظة:
لكي يتم استخدام ال Class ينبغي وجود Object واحد علي اﻻقل من هذا ال Class.

المثال أو المثيل Instance :وهو شكل الفئة أو كائن محدد والذي ينشأ في وضع التشغيل، وبشكل آخر يمكن أن نسمي الفئة في وضع التشغيل (نموذج).


  • التجريد Abstraction : قدرة البرنامج على تجاهل بعض واجهات المعلومات المتلاعبة، أي التركيز على المفهوم الأساسي للكائن وهيكليته النظرية وتجريده من طريقة العمل النهائية والتوجهات الخارجية.

  • التغليف Encapsulation : التأكد أن المستخدم لا يستطيع أن يغير البيانات الداخلية لكائن بطريقة مفاجئة، فقط دوال الكائن الداخلية يسمح لها بتعديل حالة الكائن وبياناته. أي أنه لا يمكن التلاعب بالكائن وتغير معلوماته بأي طريقة بل أن هناك واجهة استخدام خاصة يضعها المبرمج ومن خلالها يمكن تغيير بيانات الكائن الداخلية وحالته.

  • تعدد الأوجه Polymorphism: بدلاً من استدعاء الإجراءات الفرعية مباشرة، تستطيع البرمجة الشيئية إرسال رسائل، الإجراء المعين الذي يتم نداؤه نتيجة الرسالة يعتمد على نوع الكائن الذي أُرسل له. أي أنه باستخدام نفس اسم الاستدعاء يمكن استدعاء إجراءات ودوال مختلفة اعتماداً على نوع الكائن.

  • الوراثة Inheritance : يستطيع الكائن وراثة خصائص كائن معين والزيادة عليها دون أن يتأثر الكائن الأصلي. فقد يكون هناك كائن «مركبة» فيه الخصائص العامة لكل المركبات مثل الاسم واللون ورقم التسجيل، الكائن «الطائرة» ممكن أن يرث الكائن «مركبة» ويضيف عليه خصائص «الطائرة»، كذلك يمكن أن يكون هناك مثلاً كائن «مربع» فيه خصائص الطول والعرض ويمكن للكائن «مكعب» أن يرث من «المربع» ويضيف عليه خصائص العمق والحجم.


مثال على تعددية الأوجه: إذا افترضنا أن المتغير «مركبة» يشير إلى كائن إما أن يكون «سيارة» أو «سفينة» أو «طائرة». فإذا أردنا في المثال للطائرة أن تطير وللسيارة أن تمشي وللسفينة أن تبحر فعلينا أولاً معرفة نوع الكائن ثم إعطاء الأمر؛ أي إذا كان «مركبة» هو كائن من نوع «سفينة» فالمركبة يجب أن تبحر، ولكن مع تعددية الأوجه يمكننا أن ننشئ دالة واحدة في كل كائن اسمها «تحرك» (الدالة «تحرك» في «السفينة» تقوم بالأبحار والدالة «تحرك» في «الطائرة» تقوم بالطيران .. الخ). الآن لا يجب علينا أن نعرف نوع الكائن فكل ما علينا فعله هو استدعاء الدالة «تحرك» للمركبة، هذا سيقوم باستدعاء دالة «تحرك» الخاصة بالكائن الحالي فإذا كان الكائن «سفينة» فهذا يعني أن الدالة «تحرك» الخاصة بالسفينة ستُسْدَعى والتي ستقوم بأبحار «السفينة». 



من أحدث أساليب هندسة البرامج ما يعرف بالطريقة الموجهة للكائنات: تعد «الطريقة الموجهة للكائنات» من الأساليب الجديدة في تطوير النظم وهو أسلوب التحليل والتصميم الكائني التوجه، حيث يقوم هذا الأسلوب بدمج البيانات والعمليات في بيئة واحدة تسمى كائن، ويمثل الكائن عادة الأشياء الواقعية التي يعالجها نظام المعلومات مثل الزبائن والمزودين والعقود واتفاقيات الإيجار. 

من اللغات التي تعمل البرمجة الشيئية أو بالكائنية 

  • لغة سي++
  • لغة جافا
  • لغة بايثون
  • لغة دلفي (لغة برمجة)
  • لغة سي شارب
  • لغة الجافا سكربت
  • لغة php 
  • لغة Dart
الاسمبريد إلكترونيرسالة