الربط الديناميكي في C ++: الشرح والوظائف والتنفيذ

نشرت: 2021-02-04

جدول المحتويات

مقدمة

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

ما هو الربط الديناميكي؟

بالربط ، نعني بشكل عام ربط كائن بآخر. من حيث لغات البرمجة ، لا يختلف الربط كثيرًا. إنه ربط تعريف الوظيفة واستدعاء الوظيفة. لكن لماذا "ديناميكي"؟ بكلمات بسيطة ، يؤدي الربط الديناميكي فقط إلى تأخير اختيار أو تحديد الوظيفة التي سيتم تشغيلها حتى وقت تشغيلها. باستخدام الربط الديناميكي في C ++ ، نختار الوظيفة التي يمكننا تنفيذها بناءً على النوع الأساسي للكائن.

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

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

وظائف افتراضية

لقد تحدثنا كثيرًا عن الارتباط الديناميكي في C ++ . ولكن كيف يمكن المضي قدما في ذلك؟ لتنفيذ الربط الديناميكي في كود C ++ الخاص بك ، تحتاج إلى استخدام "الوظائف الافتراضية". إذن ما هي الوظائف الافتراضية؟

لن تتناول هذه المقالة على نطاق واسع الوظائف الافتراضية لأنها مهمة بما يكفي لمقال منفصل. ولكن سيتم تزويدك بمعلومات كافية حول الوظائف الافتراضية لفهم الربط الديناميكي بوضوح.

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

هذه هي قوة الوظائف الافتراضية. في C ++ ، تقوم بتعريف وظيفة افتراضية باستخدام الكلمة الأساسية "virtual" في بداية تعريف الوظيفة. قد لا تضطر إلى تكرار الكلمة الأساسية الظاهرية لكل فئة مشتقة من فئة أساسية لأنه بمجرد إعلان الوظيفة "افتراضية" ، ستظل "افتراضية" في جميع الفئات المشتقة.

تطبيق C ++

هذا عن الوظائف الافتراضية. الآن دعونا ننظر في برنامج لفهم الربط الديناميكي في C ++ :

برنامج # 1 :

نرى فئتين: - الفئة A هي الفئة "الأساسية" ، بينما الفئة B هي "الفئة المشتقة". داخل كلا الفئتين ، هناك وظيفة واحدة بنفس الاسم "عرض". في فئة الأصل ، هناك وظيفة أخرى تسمى final_print () تستدعي وظيفة العرض (). في الدالة main () ، نصنع كائنين مختلفين لفئتين مختلفتين ، نستدعي نفس وظيفة display ().

دعونا نرى إخراج البرنامج أعلاه.

مخرجات البرنامج # 1:

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

الآن لتحويل الكود أعلاه إلى رمز ربط ديناميكي ، نحتاج إلى استخدام وظائف افتراضية. دعونا نرى كيف نفعل ذلك.

برنامج رقم 2:

نضيف فقط الكلمة الرئيسية "الافتراضية" لكل من وظائف العرض () الخاصة بنا في الفئة A والفئة B ، مما يجعلها وظائف افتراضية. هذا هو التغيير الوحيد المطلوب. تمامًا كما في السابق ، نسمي نفس الدالة final_print () باستخدام كائنين مختلفين. دعونا نرى ما الناتج الذي نحصل عليه الآن.

مخرجات البرنامج # 2 :

هذا هو الناتج الذي أردناه ، وحصلنا عليه باستخدام الربط الديناميكي للوظائف.

تعلم دورات البرمجيات عبر الإنترنت من أفضل الجامعات في العالم. اربح برامج PG التنفيذية أو برامج الشهادات المتقدمة أو برامج الماجستير لتتبع حياتك المهنية بشكل سريع.

خاتمة

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

إذا كنت مهتمًا بمعرفة المزيد حول التطوير الكامل ، فراجع برنامج upGrad & IIIT-B Executive PG في تطوير البرامج الكامل المكدس المصمم للمهنيين العاملين ويقدم أكثر من 500 ساعة من التدريب الصارم ، وأكثر من 9 مشاريع ومهام ، وحالة خريجي IIIT-B ، ومشاريع التخرج العملية العملية والمساعدة في العمل مع الشركات الكبرى.

ما هي لغة البرمجة C ++؟

C ++ هي لغة برمجة للأغراض العامة. إنها واحدة من أكثر لغات البرمجة استخدامًا في العالم. C ++ هي نسخة محسنة من لغة C وتوفر تسهيلات تسهل البرمجة الموجهة للكائنات. C ++ هي لغة برمجة للأغراض العامة بينما C هي لغة برمجة للأغراض الخاصة. تم إنشاء C ++ كامتداد لـ C لدعم البرمجة الموجهة للكائنات ويستخدم لتطوير تطبيقات سطح المكتب وتطبيقات الأجهزة المحمولة والأنظمة المدمجة والوقت الحقيقي وتطبيقات وخدمات الويب. C ++ هي لغة برمجة إلزامية ، إجرائية ، متعددة النماذج ، مجمعة ، للأغراض العامة. وهو يدعم البرمجة المهيكلة والبرمجة الموجهة للكائنات والبرمجة العامة. لديها نظام نوع ديناميكي وإدارة ذاكرة صريحة.

ما هي البرمجة الشيئية؟

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

ما هو الارتباط الديناميكي في C ++؟

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