في البرمجة ، المرجع هو متغير يشير إلى كائن معين في ذاكرة الكمبيوتر. عادة ، يشير المرجع إلى مثيل لفئة ، أي إلى كائن تم إنشاؤه بناء على فئة معينة. ومع ذلك ، في بعض الحالات ، قد يشير الارتباط إلى كائنات أخرى أو حتى لا يشير إلى الكائن على الإطلاق.
الحالة الأولى المحتملة التي لا يشير فيها المرجع إلى مثيل فئة هي عندما يحتوي المتغير على قيمة فارغة. تشير القيمة الفارغة إلى أن المرجع لا يشير إلى أي كائن في الذاكرة. يمكن أن يحدث هذا ، على سبيل المثال ، إذا تم حذف كائن من الذاكرة أو إذا تم الإعلان عن متغير ولكن لم تتم تهيئته.
سبب آخر لعدم إشارة المرجع إلى مثيل كائن هو عندما يحتوي المتغير على قيمة مرجع آخر. على سبيل المثال ، إذا كان هناك متغيران يشيران إلى نفس الكائن ، ثم قام أحدهما بتغيير قيمته إلى مرجع آخر ، فلن يشير المتغير الأول إلى مثيل للفئة.
من المهم أن نفهم أن الإشارة إلى كائن ما هي مجرد مؤشر لموقعه في ذاكرة الكمبيوتر. لا يؤثر تغيير قيمة المرجع على الكائن نفسه.
يمكن أن يشير المرجع أيضا إلى كائن آخر إذا تم إعادة تعريف المتغير. على سبيل المثال ، إذا تم استخدام نفس المتغير لأول مرة للإشارة إلى كائن من فئة واحدة ، ثم أعيد تعريفه للإشارة إلى كائن من فئة أخرى. في هذه الحالة ، سيشير الرابط بالفعل إلى كائن آخر.
بالإضافة إلى ذلك ، قد لا يشير المرجع إلى مثيل للفئة إذا تم حذف الكائن من الذاكرة أو إذا حدث خطأ في البرنامج. في مثل هذه الحالات ، قد يحتوي الرابط على قيمة غير صحيحة أو لا يشير إلى الكائن على الإطلاق.
- حول مفهوم الارتباط في البرمجة
- الفصل بين مرجع ومثيل كائن
- قيمة مرجع ومثيل من كائن
- الفرق بين مرجع ومثيل كائن
- القدرة على استخدام مرجع بدون مثيل كائن
- العوامل التي تؤثر على نقص التواصل
- تدمير مثيل كائن
- إعادة توجيه الرابط
- تغيير عنوان كائن
حول مفهوم الارتباط في البرمجة
في البرمجة ، المرجع هو متغير أو كائن يحتوي على عنوان أو مؤشر لكائن أو متغير آخر. في لغات البرمجة المختلفة ، قد يكون للروابط أسماء مختلفة ، مثل المؤشرات أو الروابط أو المتغيرات المرجعية.
يمكن استخدام مرجع للوصول إلى قيمة أو طرق الكائن الذي يشير إليه. ومع ذلك ، في بعض الحالات ، قد لا يشير المرجع إلى مثيل كائن أو متغير. فيما يلي بعض الأسباب التي تجعل الرابط غير صالح أو غير صحيح:
- إشارة إلى المؤشر الفارغ: إذا كان الرابط يشير إلى مؤشر فارغ ، فإنه لا يشير إلى أي شيء. يمكن أن يحدث هذا إذا تم حذف الكائن المشار إليه بواسطة المؤشر أو لم تتم تهيئته مطلقا.
- إعادة تعريف كائن: إذا تم إعادة تعريف كائن أو تغييره بعد إنشاء مرجع له ، فقد يشير المرجع إلى الحالة القديمة للكائن أو يكون قديما.
- حذف كائن: إذا تم حذف كائن من الذاكرة ، يصبح المرجع إليه غير صالح وقد يشير إلى بيانات عشوائية أو يتسبب في حدوث خطأ.
من المهم أن نفهم أن المرجع في البرمجة هو مجرد مؤشر لكائن أو متغير ، وقد يتغير اعتمادا على حالة البرنامج أو إجراءات المطور. يتطلب الاستخدام السليم للمراجع مراقبة دقيقة وإدارة الذاكرة لتجنب الأخطاء وسلوك البرنامج غير المتوقع.
أخيرا ، يسمح لك المرجع في البرمجة بالوصول إلى الكائنات والمتغيرات من خلال عنوانها أو مؤشرها. ومع ذلك ، قد يكون الرابط غير صالح أو يشير إلى بيانات غير صحيحة بسبب حذف الكائن أو تغيير في حالته.
الفصل بين مرجع ومثيل كائن
في البرمجة ، إشارة إلى كائن والكائن نفسه هما كيانان مختلفان. الارتباط هو مسار إلى كائن يسمح للبرنامج بالعثور عليه في ذاكرة الكمبيوتر. مثيل كائن هو تنفيذ مادي حقيقي لكائن يحتل مكانا معينا في الذاكرة.
قد لا تشير الإشارة إلى كائن إلى مثيله لعدد من الأسباب:
- لم يتم تهيئة الرابط. إذا لم يتم تهيئة المرجع بشكل صريح بقيمة ، فسوف يشير إلى قيمة فارغة أو إلى كائن فارغ.
- يشير الارتباط إلى كائن آخر. يمكن إعادة تعيين المرجع إلى كائن آخر ، وفي هذه الحالة لن يشير بعد الآن إلى مثيل تم إنشاؤه مسبقا.
- تم حذف الكائن من الذاكرة. إذا تم حذف كائن من الذاكرة ، فسيكون المرجع إليه غير صالح وقد يتسبب في حدوث خطأ في البرنامج.
يمكن أن يحدث موقف مماثل في لغات البرمجة المختلفة. على سبيل المثال ، في جافا ، يمكن الإعلان عن مرجع كائن باستخدام الكلمة الأساسية "فارغة" للإشارة إلى عدم وجود مثيل حقيقي للكائن. إذا تم الوصول إلى مثل هذا الارتباط ، سيحدث استثناء من نوع نولبوانتيركسيبتيون.
من المهم التمييز بين الإشارة إلى كائن والكائن نفسه لتجنب الأخطاء المحتملة في البرنامج. إن معرفة أن المرجع قد لا يشير إلى مثيل حقيقي لكائن ما يسمح للمبرمج بأن يكون أكثر حذرا وأن يقدم فحوصات مناسبة قبل استخدام المرجع.
قيمة مرجع ومثيل من كائن
في البرمجة ، يتم إنشاء الكائنات عادة باستخدام الفئات. المتغير الذي يشير إلى كائن يسمى مرجع. المرجع هو عنوان كائن في الذاكرة ، ويمكن استخدامه للوصول إلى خصائص وطرق كائن.
عندما نقوم بإنشاء مثيل لكائن باستخدام الكلمة الرئيسية الجديدة ، يتم تخصيص الذاكرة للكائن ويتم إرجاع مرجع إلى هذه الذاكرة.
ومع ذلك ، في بعض الحالات ، قد تشير الإشارة إلى كائن إلى كائن آخر ، أو قد لا تشير إلى أي كائن على الإطلاق. يمكن أن يحدث هذا ، على سبيل المثال ، إذا تمت إعادة تعيين متغير إلى فارغ أو إعادة تعيين مرجع إلى كائن آخر.
المرجع إلى الكائن هو متغير ، لذلك يمكن تغيير قيمته في أي وقت أثناء تنفيذ البرنامج. إذا تم تغيير المتغير المرجعي ، فسيتم فقد المرجع إلى الكائن السابق ، والآن يشير هذا المرجع إلى الكائن الجديد. هذا يسمح لنا بإنشاء هياكل بيانات قابلة للتغيير ديناميكيا وإدارة موارد الذاكرة.
عندما يشير مرجع إلى كائن إلى كائن آخر ، نقول أن المرجع يشير إلى كائن جديد. في هذه الحالة ، يظل الكائن السابق الذي تمت الإشارة إليه في الذاكرة ويمكن جمعه بواسطة جامع البيانات المهملة إذا لم يكن هناك المزيد من الإشارات إليه.
من المهم أن نفهم الفرق بين مرجع ومثيل كائن. المرجع هو متغير يشير إلى الذاكرة حيث يتم تخزين كائن. مثيل كائن هو الكائن نفسه ، والذي يحتوي على بيانات وطرق. غالبا ما يتم استخدام المرجع والكائن بالتبادل ، لكن هذا المرجع يشير إلى الكائن ، وليس الكائن نفسه.
الفرق بين مرجع ومثيل كائن
عندما نعمل مع الكائنات في البرمجة ، غالبا ما نواجه مفهوم مرجع الكائن. مرجع الكائن هو متغير أو قيمة تشير إلى مكان في الذاكرة حيث يتم تخزين الكائن نفسه. ومع ذلك ، فإن المرجع والكائن نفسه هما شيئان مختلفان.
مثيل الكائن هو تمثيل مادي لكائن في ذاكرة الكمبيوتر. أنه يحتوي على بيانات الكائن والأساليب التي يمكن استدعاؤها للعمل مع هذه البيانات. بوجود مثيل لكائن ما ، يمكننا الوصول إلى حالته وسلوكه.
الإشارة إلى كائن ما هي مجرد مؤشر يسمح لنا بالوصول إلى هذا الكائن. يقوم بتخزين عنوان الكائن في الذاكرة ، لكن الرابط نفسه لا يحتوي على أي بيانات أو طرق للكائن. يمكن أن يشير المرجع إلى كائنات مختلفة في أوقات مختلفة ، ويمكن أن يكون لدينا مراجع متعددة لنفس الكائن.
عندما نقوم بتعيين مرجع لكائن إلى متغير ، يحصل المتغير على قيمة المرجع ، وليس الكائن نفسه. إذا قمنا بتغيير قيم متغير (مرجع) ، فلن يؤثر ذلك على الكائن نفسه. ومع ذلك ، إذا قمنا بتغيير حالة كائن من خلال مرجع ، فستكون التغييرات مرئية من خلال جميع الإشارات إلى هذا الكائن.
يحدث الموقف الذي قد لا يشير فيه مرجع إلى كائن إلى مثيله عندما يتم تعيين مرجع لمرجع أو متغير آخر. عند تعيين مرجع لمتغير جديد ، يشير المتغير الجديد إلى نفس الكائن في الذاكرة كمرجع أصلي. الآن لدينا اثنين من المراجع التي تشير إلى نفس الكائن.
من المهم التمييز بين مرجع ومثيل كائن من أجل العمل مع الكائنات بشكل صحيح وتجنب أخطاء البرمجة.
القدرة على استخدام مرجع بدون مثيل كائن
في بعض الحالات ، قد يشير مرجع إلى كائن إلى قيمة فارغة أو إلى كائن آخر غير المثيل المتوقع للكائن. يمكن أن يحدث هذا لعدة أسباب:
- تعيين ارتباط غير صحيح
- كائن كائن 1 = كائن جديد();
- كائن كائن 4 = كائن 5 ؛ / / تعيين غير صحيح للارتباط ، يشير الارتباط إلى كائن غير مرغوب فيه
في بعض الحالات ، قد يتم حذف الكائن أو تحريره من الذاكرة قبل استخدام المرجع. يمكن أن يحدث هذا نتيجة لحذف كائن يدويا أو أثناء جمع القمامة التلقائي في لغات البرمجة مثل جافا أو ج#. إذا كان الرابط يشير إلى مثل هذا الكائن ، فسيكون غير صالح وقد يتسبب في حدوث خطأ عند الوصول إليه. على سبيل المثال:
كائن كائن = كائن جديد ();
- ...
كائن.دوسوميثينغ () ؛ / / النقاط المرجعية إلى كائن غير صالح ، استدعاء الأسلوب سوف يسبب خطأ
تلف الذاكرة
في بعض الحالات ، قد يكون المرجع إلى الكائن تالفا بسبب خطأ في البرنامج أو استخدام ذاكرة غير صحيح. نتيجة لذلك ، قد يشير المرجع إلى منطقة ذاكرة غير صحيحة أو إلى كائن آخر. يمكن أن يؤدي هذا إلى سلوك برنامج غير متوقع أو أخطاء عند الوصول إلى كائن. على سبيل المثال:
كائن كائن = كائن جديد ();
...
أوبج = *(إنت*) 0 ؛ / / النقاط المرجعية إلى منطقة ذاكرة غير صحيحة
- ...
- كائن.دوسوميثينغ () ؛ / / النقاط المرجعية إلى منطقة ذاكرة لا يمكن التنبؤ بها ، استدعاء الأسلوب سوف يسبب خطأ
- يعد فهم إمكانية استخدام مرجع بدون مثيل لكائن أمرا مهما لكتابة رمز آمن وموثوق. يوصى دائما بالتحقق من مرجع الكائن قبل استخدامه لتجنب الأخطاء وسلوك البرنامج غير المتوقع.
العوامل التي تؤثر على نقص التواصل
هناك العديد من العوامل التي يمكن أن تتسبب في عدم الإشارة إلى مرجع الكائن إلى مثيله. وفيما يلي بعض منها:
حذف كائن: إذا تم حذف كائن من الذاكرة ، فإن الإشارة إليه ستشير إلى قيمة فارغة أو إلى كائن آخر. يمكن أن يحدث هذا إذا تم حذف الكائن بشكل صريح باستخدام
حذف الكلمة الرئيسية
أو إذا خرج عن النطاق وتم حذفه تلقائيا بواسطة جامع القمامة.
إعادة تعيين مرجع: في بعض الحالات ، يمكن إعادة تعيين مرجع إلى كائن للإشارة إلى كائن آخر. يمكن أن يحدث هذا إذا تم تعيين المتغير الذي يحتوي على المرجع لكائن جديد ، أو إذا تم تمرير المرجع إلى دالة عينته قيمة جديدة.
تغيير حالة كائن: إذا غير كائن حالته ، فقد لا تشير الإشارة إليه إلى حالته الحالية. على سبيل المثال ، إذا كان الكائن يحتوي على حقل تم تغييره ، فقد يشير المرجع إلى الكائن إلى الحالة القديمة للكائن.
العمليات غير المتزامنة: في حالة العمليات غير المتزامنة ، يمكن تحديث المرجع إلى الكائن قبل اكتمال العملية. قد يتسبب هذا في الإشارة إلى كائن آخر أو إلى فارغة في حالة حدوث خطأ.
من المهم أن نفهم أن الإشارة إلى كائن ما هي مجرد مؤشر إلى مكانه في الذاكرة ، ويمكن أن تتغير اعتمادا على عوامل مختلفة. لتجنب المشاكل المتعلقة بنقص الاتصال ، من الضروري مراقبة دورة حياة الكائن بعناية ومراقبة حالته. يجب استخدام مرجع الكائن بعناية لتجنب سلوك البرنامج غير المتوقع.
تدمير مثيل كائن
عندما نقوم بإنشاء مثيل لكائن في البرنامج ، يتم تخصيص الذاكرة لتخزينه. ولكن عندما لا يكون الكائن قيد الاستخدام ، فمن الضروري تحرير الذاكرة التي يشغلها. يتم تحرير الذاكرة تلقائيا في لغات البرمجة التي تدعم جمع القمامة.
جامع البيانات المهملة هو أحد مكونات الجهاز الظاهري الذي يتتبع جميع الكائنات التي تم إنشاؤها ويحذف تلك التي لم تتم الإشارة إليها. يقوم بتحليل جميع المراجع في البرنامج لتحديد الكائنات التي يجب حذفها. إذا كان الكائن لا يحتوي على إشارات إليه ، فإن جامع القمامة سيعتبره غير ضروري ويحرر الذاكرة التي يشغلها.
يمكن تدمير الإشارات إلى الأشياء لأسباب مختلفة:
تعيين مرجع إلى كائن آخر;
لم يعد الوصول إلى الرابط ممكنا;