recent
أخبار ساخنة

مقارنة بين أنواع البرمجة (التقليدية، والهيكلية، والكائنية/ الشيئية)

مدخل إلى البرمجة الشيئية أو الكائنية 

مدخل إلى البرمجة الشيئية أو الكائنية 

مدخل إلى البرمجة الشيئية أو الكائنية 
خلال الأسطر القليلة التالية .. سيتم إلقاء الضوء على مفهوم البرمجة الكائنية أو الشيئة Object Oriented Programming وهي ما يطلق عليها اختصاراً OOP .. ماهيتها ومميزاتها ..
فكّر بالكائنات Think about Objects : ستتعرف في هذا الجزء على أهم المصطلحات المستخدمة في الـOOP كما ستفهم فكرة الـOOP إن شاء الله !..

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

ويمكننا تصنيف الكائنات إلى صنفين :

كائنات نشطة (حية) Animate Objects : وهي التي نحس فيها فنجد لها حركة ونشاط ..
كائنات غير نشطة (غير حية) Inanimate Objects : هي التي لا نلاحظ لها نشاط أو حركة أو وقع أينما وجدت ..

وجميع الكائنات بصنفيها لها :
* خصائص Attribute .. مثل الحجم، اللون ، الوزن ، الشكل... ألخ ..
* سلوك Behavior .. فمثلاً الطفل (كائن) يبكي، وينام، ويمشي ، ويأكل (سلوكيات)..
الإنسان وخصوصاً المبرمج يتعلم عن الكائنات بمعرفة خصائصها ، وملاحظة ( تجربة ) سلوكها ، فمن الممكن أن يكون لكائنات مختلفة نفس الخصائص وسلوك متقارب ..

البرمجة الشيئية Object Oriented Programming تقوم بنمذجة Modeling كائنات العالم الحقيقي في برنامج نظير software counterpart .. هذا البرنامج يحمل إيجابيات العلاقات بين الفئات classes relationships حيث أن أي كائن من أي فئة يحمل جميع مميزات وصفات characteristics هذه الفئة أو بالأحرى يرثها لأنه ممثل لفئته ..
كما أن الفئات الجديدة -ت سمى فئة فرعية subclass - ترث صفات الفئات التي أُنتجت وتكونت منها - تسمى الفئة الأم superclass - كما يرث الطفل جينات أبويه .. وهذه الفئة الجديدة والتي تعتبر subclass ، من الممكن أن تكون superclass لفئات جديدة أخرى ينشئها المبرمج ..

الـOOP كذلك تقوم باحتواء البيانات (Data (attributes والطرق (Methods (behavior في حزمة package هي ما نطلق عليه "كائنات Objects"؛ حيث أن بيانات وطرق أي كائن ترتبط ببعضها ارتباط وثيق .. هذا الكائن يتميّز بخاصية التخفي Information Hiding نعني بالتخفي هنا أنه بإمكان الكائنات الاتصال والتعامل مع بعضها البعض مع عدم معرفة أحدها كيف تكوّن الآخر! أي أن تفاصيل التكوين هي المخفيّة حتى عن الكائنات نفسها .. فمن المؤكد أننا نعرف كيف نقود السيارة بكفاءة عالية دون معرفة تفاصيل هندستها .. تسمى هذه الخاصية في البرمجة بـAbstraction أي تجريد البيانات ..
برامج الجافا جميعها قائمة على برمجة المبرمج لمجموعة فئات خاصة به تسمى user-defined classes باستخدام الفئات والمميزات التي توفرها اللغة ومن ثم استخدام هذه الفئات جميعها أو بعضها في برامجه حيث أن كل فئة تحتوي على بيانات data ومجموعة دوال functions تقوم بتشكيل هذه البيانات ، تسمى البيانات في فئات الجافا بـ : instance variable أو data member .. ويطلق على الدوال اسم الطرق methods .. فأي طلب لأي فئة معرّفة في اللغة كأنواع البيانات مثل int يسمى "متغير variable"، بينما طلب أي فئة من الفئات التي عرّفها المبرمج user-defined يسمى "كائن object"..

البرمجة الشيئية أو الكائنية Object Oriented Programming .. عند حديثنا عن البرمجة الشيئية ، نجمل الحديث في كلمتين : الوراثة وتعدد الأشكال Inheritance & Polymorphism ، وهما من التقنيات الفعّالة للتعامل مع البرمجيات المعقدّة :
فالوراثة inheritance هي شكل للبرامج software المعدّة للاستعمال مع الفئات classes الحديثة والتي أنشئت من فئات موجودة مسبقاً وأخذت عنها خصائصها وسلوكها وأضافت إليها القدرات التي نحتاج إليها في هذه الفئة الجديدة ..

الوراثة ماذا تعني عملياً؟! تعني بالضبط ما الذي تم وراثته وكيف يمكن التعديل عليه وما الذي لا يمكن وراثته - يتضح ذلك بالأمثلة - هذه الخاصية توفر الكثير من الوقت للمبرمج وتقطع عنه أشواطاً في تطوير برنامجه ..

وتعدد الأشكال polymorphism يسمح لنا بكتابة برنامجنا في صورة قابلة لتغيير واسع النطاق؛ سواء كان التغيير لفئات موجودة مسبقاً أو تغيير مستقبلي لإنتاج برامج جديدة ..

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

وهكذا تمتد لدينا سلسلة من الوراثة بين الفئات extends .. يحكمها قانون "الوراثة المفردة Single Inheritance" حيث ينص هذا القانون على :
تنشأ أي فئة فرعية من فئة أم واحدة ، فالجافا لا تدعم التوارث المتعدد multiple inheritance كالسي++ ولكنها تدعم مفهوم الواجهات Interfaces ، فنظام الواجهات يساعد الجافا على تحقيق فائدة التوارث المتعدد مع عدم وجود الأخطاء المترابطة الناتجة عن هذا التوارث المتعدد !..

تذكر أن أي كائن ينتمي إلى فئة فرعية فهو ينتمي إلى الفئة الأم لهذه الفئة الفرعية ويحمل خصائصهما وسلوكهما ..
وبعد هذه المقدمة وهذا التوصيف لعالم الـOOP نلاحظ أن جُلّ التركيز في هذا النوع من البرمجة يقع على الـفئات Classes ، فالمبرمج يستخدم الفئات المبنية مسبقاً في اللغة مع الفئات التي يبنيها هو كي ينتج برنامجاً بالجافا ربما يفسر هذا الاسم OOP..



الفرق بين البرمجة كائنية التوجه OOP والبرمجة التقليدية Traditional Programming :

1.وحدة بناء البرنامج .
2.البيانات .

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

الفرق بين البرمجة كائنية التوجه والبرمجة التقليدية :


يختلف البرنامج المكتوب بأسلوب oop عن البرنامج المكتوب بالطريقة التقليدية :-

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

أما الفرق بين البرمجة الكائنية و البرمجة الهيكلية


هو أن البرمجة الهيكلية تعتمد علي مفهوم ال OPP و فيها يتم تقسيم البرنامج و الكود إلي مجموعة دوال و functions يمكنك استدعائها في اي جزء من البرنامج حسب القيود التي وضعتها أنت علي هذه الدالة :) و هي مرحلة تقريباً متوسطة أو منتصف الطريق للبرمجة الكائنية

البرمجة الكائنية انها معتمدة علي مفهوم ال OOP بشكل أكبر حيث تستعمل مفهومات الوراثة و غيرها و هو عبارة عن أن كل كائن "class" لديه مجموعة من الخصائص ^_^ يعني مثل حزمة و إلها مواصفات تسهل عليك الكثير من الأشياء و تكون الأكواد منفصلة و بشكل أفضل.

مسميات البرمجة كائنية التوجه

البرمجة كائنية التوجه Object-oriented programming - OOP (و يطلق عليها احيانا اسم : برمجة غرضية التوجه ، أو برمجة شيئية مع أن هذه الأخيرة لا تعتبر ترجمة محبذة ) عبارة عن نمط برمجة متقدم، وفيه يقسم البرنامج إلى وحدات تسمى الكائنات (Objects)، كل كائن عبارة عن حزمة (تعليب) من البيانات (المتغيرات والثوابت) والدوال ووحدات التنظيم وواجاهات الأستخدام. ويتم بناء البرنامج بواسطة أستخادم الكائنات وربطها مع بعض وواجهة البرنامج الخارجية بأستخدام هيكيلة البرنامج وواجاهات الأستخدام الخاصة بكل كائن.

أسماء عربية أخرى:


  1. برمجة موجهة
  2. برمجة كائنية (برمجة كينونة)
  3. برمجة كائنية التوجه
  4. برمجة غرضية التوجه
  5. برمجة كائنية المنحى (أو المنحى)
  6. برمجة بالعناصر

google-playkhamsatmostaqltradent