ملف تنفيذ الفئة

في البرمجة كائنية التوجه ، يُستخدم ملف تنفيذ الفئة غالبًا لاحتواء شيفرة تنفيذ أساليب الفئة . تستخدم لغات البرمجة مثل C++ وObjective - C ملفات التنفيذ هذه لفصل واجهة هذه الأساليب عن تنفيذها. [ 1 ]

تحفيز

باستخدام هذا الهيكل، يتم إنشاء ملف تعريف فئة يحتوي على تعريف الفئة وأعضائها. إذا تم تضمين تعريف الفئة وكان ملف تنفيذ أساليبها متاحًا، فيمكن للمستخدم إنشاء كائن من الفئة. الغرض من هذا الهيكل هو إخفاء كود التنفيذ، مع السماح للمستخدم برؤية التصميم. [ 2 ] [ 3 ]

يستفيد المستخدمون من الواجهة العامة للكائن لتسهيل إنشاء الكائنات قدر الإمكان، مما يضمن عدم تشتيت انتباه المستخدم بتفاصيل غير ضرورية لتنفيذ الفئة. [ 4 ] يتيح هذا للمستخدم الحصول على المعلومات اللازمة لاستخدام الفئة بفعالية، مع منعه من إتلاف الكود المُترجم. [ 5 ]

بنية ملف تنفيذ الفئة

يُستخدم ملف التنفيذ في برمجة C++ عند إنشاء تعريف فئة لفصل الواجهة عن التنفيذ. ويُعرّف ملف الرأس جميع الدوال الأعضاء (الأساليب) وأساليب البيانات (الحقول) التي تحتويها الفئة. [ 6 ] [ 7 ] [ 8 ]

سيحتوي ملف التنفيذ على التعريف الفعلي أو الشفرة المصدرية للطرق المُعلنة في ملف الرأس . يبدأ هذا الملف عادةً بكتلة رأسية تتضمن تعليقات تشرح الغرض من الفئة المُعرّفة وأي تفاصيل أخرى حول إنشاء الملف، مثل مُنشئ الملف وتاريخ إنشائه. [ 9 ] كما يمكن أن يتضمن أي مكتبات من مكتبة C++ القياسية التي ستستخدمها أي من الطرق المُعلنة في الملف. عادةً ما يحتوي ملف تنفيذ الفئة على سطر لتضمين ملف الرأس المرتبط به (انظر الأمثلة أدناه).

مثال بلغة C++

مثال على ذلك هو وجود فئة تُسمى ExampleClass. سيُسمى ملف رأس ملف C++ هذا " Example.hpp "، وسيكون ملف التنفيذ " ExampleClass.cpp ". [ 10 ] [ 11 ]

في هذا المثال، تم حذف تنفيذ الدوال، ولكن يجب تعريف الدوال في ExampleClass.hpp على النحو التالي: [ 12 ]

#include <string>namespace wikipedia :: examples {class ExampleClass { private : std :: string name ; public : ExampleClass (); // الدالة البانية. void addSomething ( int k ); };}

مثال على بنية ملف ExampleClass.cpp سيبدو كالتالي:

دبراغما مرة واحدة#include "ExampleClass.hpp"namespace wikipedia :: examples {ExampleClass :: ExampleClass () = default ;void ExampleClass::addSomething ( int k ) { // ... }}

يمكن تكرار هذا الهيكل باستخدام وحدات C++ أيضًا، وإن كان ذلك بدلالات مختلفة قليلاً.

في ملف ExampleClass.cppm (ملف التصريحات):

تصدير الوحدة النمطية wikipedia . أمثلة . فئة المثال ؛استيراد std ؛باستخدام std :: string ;تصدير مساحة الاسم ويكيبيديا :: أمثلة {class ExampleClass { private : string name ; public : ExampleClass (); // الدالة البانية. void addSomething ( int k ); };}

في ملف ExampleClass.cpp (ملف التعريفات/التنفيذات):

وحدة ويكيبيديا . أمثلة . فئة المثال ؛namespace wikipedia :: examples {ExampleClass :: ExampleClass () = default ;void ExampleClass::addSomething ( int k ) { // ... }}

يمكن تضمين هذا في ملف Main.cpp على النحو التالي:

استيراد wikipedia.examples.ExampleClass ؛باستخدام ويكيبيديا :: أمثلة :: فئة المثال ؛int main () { ExampleClass myInst ; myInst . addSomething ( 5 ); return 0 ; }

مثال بلغة Objective-C

مثال آخر على كيفية تنظيم ملف تنفيذ فئة ما هو لغة Objective-C ، المستخدمة في برمجة iOS . [ 13 ] سيستخدم هذا المثال الفئة "ExampleClass". من أبرز الاختلافات بين لغتي C++ و Objective-C عند استخدام ملفات التنفيذ هذه، هو الامتداد المستخدم في نهاية الملفات. في C++ يكون الامتداد .cpp [ 14 ] ، وفي Objective-C يكون .m [ 15 لكن كلتيهما تستخدمان الامتداد .h نفسه لملفات الرأس [ 16 ] [ 17 ] ، كما هو موضح في المثال أدناه.

هذا مثال على ملف ExampleClass.h في لغة Objective-C :

#import <UIKit/UIKit.h>@interface ExampleClass : NSObject { // تعريفات متغيرات الكائن هنا } - ( NSString * ) name ; @end

هذا مثال على ملف تنفيذ الفئة Exampleclass.m في لغة Objective-C :

#import "ExampleClass.h"@implementation ExampleClass - ( NSString * ) name { return @"…" ; } @end

انظر أيضاً

مراجع

  1. آلان غريفيث (2005). "فصل الواجهة والتنفيذ في لغة C++" . ACCU . تم الاطلاع عليه بتاريخ 7 مايو 2013 .
  2. آلان غريفيث (2005). "فصل الواجهة والتنفيذ في لغة C++" . ACCU . تم الاطلاع عليه بتاريخ 7 مايو 2013 .
  3. نيوبيرغ، مات (26 مايو 2011). "الفصل 4.3 ملف الرأس وملف التنفيذ". برمجة iOS 4. دار نشر أورايلي ميديا. رقم ISBN 978-1-4493-8843-0.
  4. آلان غريفيث (2005). "فصل الواجهة والتنفيذ في لغة C++" . ACCU . تم الاطلاع عليه بتاريخ 7 مايو 2013 .
  5. "مبادئ وقواعد استخدام لغة C++" . مشروع كروميوم . تم الاطلاع عليه بتاريخ 7 مايو 2013 .
  6. "مقدمة إلى فئات C++" . تم الاطلاع عليه بتاريخ 2013-05-07 .
  7. آلان غريفيث (2005). "فصل الواجهة والتنفيذ في لغة C++" . ACCU . تم الاطلاع عليه بتاريخ 7 مايو 2013 .
  8. فيبيل تشاكو ثانيكال (2009). "كيفية تعريف فئة قالب في ملف .h وتنفيذها في ملف .cpp" . مشروع الكود . تم الاسترجاع في 7 مايو 2013 .
  9. "ملف التنفيذ في برمجة C++" . ITechTalk . تم الاطلاع عليه بتاريخ 7 مايو 2013 .
  10. "مقدمة إلى فئات C++" . تم الاطلاع عليه بتاريخ 2013-05-07 .
  11. نيوبيرغ، مات (26 مايو 2011). "الفصل 4.3 ملف الرأس وملف التنفيذ". برمجة iOS 4. دار نشر أورايلي ميديا. رقم ISBN 978-1-4493-8843-0.
  12. "مقدمة إلى فئات C++" . تم الاطلاع عليه بتاريخ 2013-05-07 .
  13. نيوبيرغ، مات (26 مايو 2011). "الفصل 4.3 ملف الرأس وملف التنفيذ". برمجة iOS 4. دار نشر أورايلي ميديا. رقم ISBN 978-1-4493-8843-0.
  14. "مقدمة إلى فئات C++" . تم الاطلاع عليه بتاريخ 2013-05-07 .
  15. نيوبيرغ، مات (26 مايو 2011). "الفصل 4.3 ملف الرأس وملف التنفيذ". برمجة iOS 4. دار نشر أورايلي ميديا. رقم ISBN 978-1-4493-8843-0.
  16. "مقدمة إلى فئات C++" . تم الاطلاع عليه بتاريخ 2013-05-07 .
  17. نيوبيرغ، مات (26 مايو 2011). "الفصل 4.3 ملف الرأس وملف التنفيذ". برمجة iOS 4. دار نشر أورايلي ميديا. رقم ISBN 978-1-4493-8843-0.