الفرق الرئيسي - الربط الثابت مقابل الربط الديناميكي
لغات البرمجة مثل Java و Cتدعم البرمجة الشيئية (OOP). يسمح ببناء البرامج باستخدام الكائنات. هناك العديد من العناصر في نظام أو برنامج. هذه الأشياء لها سمات وطرق. السمات تصف الخصائص. تصف الأساليب الإجراءات التي يمكن أن يؤديها الكائن. يتم تمرير البيانات من خلال الكائنات باستخدام الأساليب. يتم إرسال القيم المطلوبة من خلال استدعاءات الأسلوب مع المعلمات. يتم تنفيذ الطريقة الفعلية في تعريف الطريقة. هناك ارتباط بين استدعاء الطريقة وتعريف الطريقة.يُعرف باسم الربط. هناك نوعان من الارتباطات. إنها ربط ثابت وديناميكي. يتمثل الاختلاف الرئيسي بين الربط الثابت والربط الديناميكي في أنه في الربط الثابت ، يتم حل الربط في وقت الترجمة بينما يتم حل الربط الديناميكي في وقت التشغيل ، وهو الوقت الفعلي للتنفيذ. تتناول هذه المقالة الاختلاف بين آليتي الربط هاتين.
ما هو الربط الثابت؟
الربط هو الرابط بين استدعاء الطريقة وتعريفات الطريقة.
الشكل 01: الربط الثابت والربط الديناميكي
راجع البرنامج أدناه المكتوب بلغة جافا.
فئة عامة A {
public void method1 () {
System.out.println (“الطريقة 1”) ؛
}
public void method2 () {
System.out.println (“الطريقة 2”) ؛
}
public static void main (String args) {
A obj=new A () ؛
obj.method1 () ؛
obj.method2 () ؛
}
}
وفقًا للبرنامج أعلاه ، يتم إنشاء كائن من النوع أ. ثم يتم استدعاء method1 و method2. يُعرف تحديد الطريقة التي يجب أن تتطلب التنفيذ باسم الربط. سوف تستدعي العبارة obj.method1 () method1 () بينما تستدعي obj.method2 () method2 (). هذا الرابط ملزم.
في الربط الثابت ، يتم حل الربط في وقت الترجمة بواسطة المترجم. يُعرف أيضًا باسم الربط المبكر. يحدث الربط قبل تشغيل البرنامج فعليًا. يحدث الربط الثابت في طريقة التحميل الزائد. راجع البرنامج أدناه المكتوب بلغة جافا.
حساب الفراغ العام {
public void sum (int x، int y) {
System.out.println (“Sum is“، x + y)؛
}
مجموع باطل عام (ضعف س ، ص مزدوج) {
System.out.println (“Sum is“، x + y)؛
}
public static void main (String args) {
Calculation cal=new Calculation () ؛
cal.sum (2، 3) ؛
cal.sum (5.1، 6.4) ؛
}
}
وفقًا للبرنامج أعلاه ، عند تمرير عددين صحيحين ، سيتم استدعاء الطريقة ذات العددين الصحيحين. عند تمرير قيمتين مزدوجتين ، سيتم استدعاء الطريقة المقابلة لقيمتين مزدوجتين. تحدث عملية الربط هذه في وقت التجميع. يعرف المترجم أنه يجب استدعاء طريقة sum بقيمتين صحيحتين لـ cal.sum (2، 3). بالنسبة للكال (5.1 ، 6.4) ، سوف تستدعي طريقة الجمع بقيمتين مزدوجتين. جميع المعلومات المطلوبة معروفة قبل وقت التشغيل ، لذلك فهي تزيد من كفاءة البرنامج وسرعة التنفيذ.
ما هو الربط الديناميكي؟
في الربط الديناميكي لا يقوم المحول البرمجي بحل الربط في وقت الترجمة. يحدث الربط في وقت التشغيل. يُعرف أيضًا باسم الربط المتأخر. يحدث الربط الديناميكي في أسلوب التجاوز. الرجوع إلى البرنامج المكتوب بلغة جافا.
فئة عامة الشكل () {
رسم باطل عام () {
System.out.println ("رسم الشكل") ؛
}
}
دائرة الطبقة العامة () تمتد الشكل {
رسم باطل عام () {
System.out.println ("ارسم دائرة") ؛
}
}
مثلث الطبقة العامة () يمتد الشكل {
رسم باطل عام () {
System.out.println ("رسم مثلث") ؛
}
}
اختبار الفصل العام {
public static void main (String args) {
الشكل ؛
ق=شكل جديد () ؛
ق.رسم () ؛
ق=دائرة جديدة () ؛
ق.رسم () ؛
ق=مثلث جديد () ؛
ق.رسم () ؛
}
}
وفقًا للبرنامج أعلاه ، يحتوي شكل الفصل على طريقة رسم (). يمتد فئة دائرة ومثلث الفئة فئة الشكل. يمكن لدائرة الفئة ومثلث الفئة أن ترث سمات وطرق شكل الفئة. لذلك ، شكل الفصل هو الطبقة الفائقة أو فئة الأصل. Class Circle و Class Triangle عبارة عن فئات فرعية أو فئات مشتقة. تحتوي هذه الفئات أيضًا على طريقة draw () مع تطبيقاتها الخاصة. لذلك ، تم تجاوز طريقة draw () في الفئة الممتازة.
في الطريقة الرئيسية ، يتم استدعاء كائنات مختلفة. يوجد متغير مرجعي من نوع الشكل ، وهو s. ثم تستدعي s الطريقة وفقًا للفئة المحددة. في وقت الترجمة ، سيقوم المترجم بإحالة طريقة السحب للفئة الممتازة فقط.عندما يبدأ التنفيذ الفعلي ، سيؤدي ذلك إلى تنفيذ طرق رسم مختلفة. أولاً ، سيشير s إلى كائن من النوع Shape. لذلك ، سوف تستدعي طريقة السحب في فئة الشكل. ثم سيشير s إلى كائن من النوع Circle ، وسوف يستدعي طريقة السحب لفئة الدائرة. أخيرًا ، ستشير s إلى كائن من نوع Triangle ، وسوف تستدعي طريقة الرسم في فئة Triangle. على الرغم من أن المتغير المرجعي من النوع Shape ، إلا أن الربط يعتمد على نوع الكائن. يُعرف هذا المفهوم باسم الربط الديناميكي. يتم توفير المعلومات في وقت التشغيل ، وبالتالي فإن سرعة التنفيذ أبطأ مقارنة بالربط الثابت.
ما هو التشابه بين الربط الثابت والربط الديناميكي؟
كلاهما مرتبط بتعدد الأشكال الذي يسمح للكائن بالتصرف بطرق متعددة
ما هو الفرق بين الربط الثابت والربط الديناميكي؟
الربط الثابت مقابل الربط الديناميكي |
|
الربط الثابت هو نوع الربط الذي يجمع كل المعلومات المطلوبة لاستدعاء وظيفة أثناء وقت الترجمة. | الربط الديناميكي هو نوع الربط الذي يجمع كل المعلومات المطلوبة لاستدعاء وظيفة أثناء وقت التشغيل. |
وقت الربط | |
يحدث الربط الثابت في وقت الترجمة. | يحدث الربط الديناميكي في وقت التشغيل. |
الوظيفة | |
يستخدم الربط الثابت معلومات النوع للربط. | يستخدم الربط الديناميكي الكائنات لحل الارتباط. |
الكائن الفعلي | |
لا يستخدم الربط الثابت كائنًا حقيقيًا للربط. | الربط الديناميكي ، استخدم الكائن الفعلي للربط |
مرادفات | |
يُعرف الربط الثابت أيضًا باسم الربط المبكر. | يُعرف الربط الديناميكي أيضًا باسم الربط المتأخر. |
تنفيذ | |
سرعة التنفيذ سريعة في الربط الثابت. | سرعة التنفيذ منخفضة في الربط الديناميكي. |
مثال | |
يستخدم الربط الثابت في طريقة التحميل الزائد. | يستخدم الربط الديناميكي في تجاوز الطريقة |
ملخص - الربط الثابت مقابل الربط الديناميكي
هناك ارتباط بين استدعاء الطريقة وتعريف الطريقة.يُعرف باسم الربط. هناك نوعان من الارتباطات يسمى الربط الثابت والربط الديناميكي. الفرق بين الربط الثابت والربط الديناميكي هو أنه في الربط الثابت ، يتم حل الربط في وقت الترجمة بينما يتم حل الربط الديناميكي في وقت التشغيل ، وهو الوقت الفعلي للتنفيذ. نظرًا لتوفير المعلومات المطلوبة قبل وقت التشغيل ، يكون الربط الثابت سريعًا في التنفيذ مقارنة بالربط الديناميكي.
قم بتنزيل ملف PDF الخاص بـ Static Binding مقابل Dynamic Binding
يمكنك تنزيل نسخة PDF من هذه المقالة واستخدامها لأغراض غير متصلة بالإنترنت وفقًا لملاحظة الاقتباس. يرجى تنزيل نسخة PDF من هنا: الفرق بين الربط الثابت والربط الديناميكي