فضای نام (علوم رایانه)

در علم رایانش، یک فضای نام (به انگلیسی: Namespace) یک مجموعه نماد می‌باشد که از آن برای سازمان دادن به انواع متفاوت شیء استفاده می‌شود، هدف آن است که این اشیا بتوانند توسط نام ارجاع شوند. یک فضای نام باید تضمین کند که همهٔ شناسه‌های موجود در آن نام یکتایی دارند و در نتیجه اشیاء به راحتی قابل شناسایی می‌باشند.[۱]

فضاهای نام معمولاً سلسله مراتبی هستند، دلیل این امر امکان استفاده مجدد از نام‌ها در زمینه‌های مختلف است.[۱]

مثال

مثال‌های برجسته از فضای نام شامل:[۱]

مقایسه فضای نام رایانه با فضای نام در انسان‌ها

برای مقایسه یک سیستم نامگذاری افراد را در نظر بگیرید، که در آن هر انسان یک نام خاص دارد و بعلاوه یک نام خانوادگی دارد که با وابستگان خود مشترک است. اگر نام کوچک برای اعضای خانواده تنها در یک خانواده یکتا باشد، آنوقت هر فرد می‌تواند به صورت منحصر به فرد با ترکیبی از نام کوچک و نام خانوادگی شناسایی شوند. تنها یک «بیژن شیرازی» وجود دارد، اگر چه ممکن است «بیژن» های زیادی وجود داشته باشد. در فضای نام خانواده «شیرازی»، تنها «بیژن» کافی است که به صورت غیر مبهم آن فرد را معین کند، در حالیکه در فضای نام «جهانی» برای همهٔ افراد، باید از نام کامل استفاده کرد.[۱]

  • به صورت مشابه، سیستم فایل سلسله مراتبی، فایل‌هایش را در پرونده‌ها (دایرکتوری) سازماندهی می‌کند. هر پرونده یک فضای نام جداگانه است، بنابراین کلمه‌ها و نیز مفاد درونی پرونده هر دو ممکن است شامل یک فایل «to_jane» باشند.
  • در زبان‌های برنامه‌نویسی، از فضای نام به صورت معمول برای اهداف گروه‌بندی نشانه‌ها و شناسه‌ها، در حول یک عملکرد بخصوص، و نیز جلوگیری برخورد اسامی بین چندین شناسه که دارای نام مشابه‌اند، استفاده می‌شود.
  • در شبکه‌سازی، سامانه نام دامنه وبگاه‌ها (و دیگر منابع) را به فضای نام سلسله مراتبی، سازمان‌دهی می‌کند.[۱]

به عبارت دیگر، فضای نام، این امکان را می‌دهد که موجودیت‌هایی مثل کلاس‌ها، اشیاء و توابع را تحت عنوان یک نام جمع کنیم.[۶]

یک مثال از فضای‌نام در زبان ++C

#include <iostream>// This is how one brings a name into the current scope.  In this case, it's// bringing them into global scope.using std::cout;using std::endl;namespace box1 {    int box_side = 4;}namespace box2 {    int box_side = 12;}int main() {    int box_side = 42;    cout << box1::box_side << endl;  // Outputs 4.    cout << box2::box_side << endl;  // Outputs 12.    cout << box_side << endl;  // Outputs 42.}

منابع

🔥 Top keywords: