المعلوماتية > برمجيات

البرمجة الغرضية التوجه (Object Oriented Programming (OOP

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

نستطيع إسقاط هذه النظرة على طريقة تفكيرنا في بناء البرمجيات (Software)، وندعوها بالمفهوم غرضي التوجه Object-Oriented في بناء البرمجيات؛ إذ يعد مفهوم غرضية التوجه منهجية لتصور المكونات البرمجية components والعلاقات فيما بينها في برمجية ما.

تعتمد هذه النظرة على ثلاث خصائص أساسية، وهي:

التغليف Encapsulation

يُنظر إلى التغليف على أنه تجميع الصفات attributes والتصرفات behaviour داخل عنصر بناء برمجي ندعوه بالغرض، وتستطيع التفاعل مع هذا الغرض عن طريق تصرفاته، ونستطيع تمييزه عن غيره عن طريق صفاته. يُعبَّر عن صفات الغرض وتصرفاته عن طريق الحقول (fields) والوظائف (methods) على التتالي. يُنشأ هذا الغرض عن طريق ما يُدعى بصف class، فالصف هو القالب، والغرض هو نسخة من هذا القالب بتفاصيل معينة (3).

الوراثة Inheritance

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

تعددية الأشكال  Polymorphism 

تُساعد على إنشاء أغراض لها التصرفات نفسها ولكن تُعطي ناتجًا مختلفًا بناءً على الغرض الذي استُدعى  منه بمساعدة خاصية الوراثة (3). مثلاً، في شركة ما هناك عدة أنواع من الموظفين، كل موظف أستطيع سؤاله السؤال نفسه: "ما هو مُسماك الوظيفي؟" (تصرّف عن طريقه استطعت التواصل مع غرض الموظف)، عن طريق مفهوم تعددية الأشكال، استطعت بسؤال واحد أن أحصل على أجوبة مختلفة، فمثلاً، موظف الموارد البشرية سيقول: "أنا مدير الموارد البشرية في الشركة"، في حين أن موظف المحاسبة سيقول: "أنا أعمل في القسم المالي للشركة".

المصادر:

1. Shute G. Object-Oriented Terminology [Internet]. D.umn.edu. [cited 30 July 2020]. Available from: هنا

2. Jiménez O. OOP Encapsulation [Internet]. Web.stanford.edu. 2008 [cited 30 July 2020]. Available from: هنا

3. Object-Oriented Programming: Polymorphism [Internet]. User.engineering.uiowa.edu. 2020 [cited 30 July 2020]. Available from: هنا