نحوه معرفی Namespace ها در پاسکال شیگرا

نحوه معرفی Namespace ها در پاسکال شیگرا
همان طور که می دانیدیک یونیت میتواند محل نگهداری نوع های داده ای باشد
شرکت ماکروسافت لایه ای را برای سازماندهی عرضه کرده است که به آن Namespace اطلاق میشود
در حقیقت یک Namespace محفظهای برای نوعهای داده ای است
در دلفی Namespace محفظهای برای یونیتهاست
بر خلاف یونیتهای سنتی Namespace ها میتوانند به صورت تودرتو مورد استفاده قرار گرفته
و محفظه سلسه مراتبی را به وجود آوردند
Namespace ها تودرتو روشی را برای سازماندهی شناسهها و نوعهای داده ای عرضه میکنند
که میتوان میان یونیتهای هم نامی که در Package های مختلفی وجود دارند قائل شد
برای مثال کلاس MyClass در MyNamespace با کلاس MyClass در YourNmaeSpace تفاوت دارد
در زمان اجرا CLR ( زبان مشترک زمان اجرا ) با توجه به نام کامل توصیفی به کلاسها و نوع ها داده ای رجوع خواهد کرد
توجه داشته باشید که سلسله مراتب Namespace ها برای CLR مفهومی ندارد
و فقط در زبان برنامه نویسی مورد استفاده قرار می گیرد
در دلفی هر پروژه دارای یک Namespace خواهد بود که به آن Project default namespace اطلاق میشود
یک یونیت میتواند عضوی از Project default namespace بوده
و یا این که به طور صریح خود را به عنوان یک Namespace متفاوت معرفی کند
در هر دو حالت یک یونیت باید عضویت خود را در یک Namespace مشخص کند
برای مثال به معرفی صریح زیر توجه کنید
unit MyCompany.MyWidgets.MyUnit;
توجه داشته باشید که NameSpace ها با استفاده از نقطه . از یکدیگر جدا میشوند
در حقیقت نقطهها قسمتی از نام یونیت محسوب میشوند
برای مثال در مرود این یونیت فایل با نام زیر ایجاد خواهد شد
MyCompany.MyWidegts.MyUnit.pas
اگر این یوینت را ترجمه کنید
فایلی با نام زیر به وجود خواهد امد
MyCompany.MyWidgets.MyUnit.dcuil
هم چنین توجه داشته باشید که نقطهها دلالت بر مفهوم تودرتو بودن دارند
در مثال قبلی یک یونیت Myunit عضوی از MyWidgets است
و MyWidgest یک Namespace است که خود عضوی از یک Namespace دیگر با عنوان MyCompany است
مجددا تاکید میکنم که این تو در تویی فقط یک مفهوم برای درک بهتر شماست و نباید شما را گیج کند
در حقیقت Project default namespace یک Namespace برای تمامی یونیتهای درون پروژه است
برای مثال به تعاریف زیر توجه کنید
Program MyCompany.programs.MyPrograms; Libary MyCompany.Libes.MyLibrary; Package MyCompany.Packages.Mypackage;
عبارات فوق ه ترتیب برای معرفی Project default namespace مربوط
به یک program و Libarary و Package مورد استفاده قرار گرفتهاند
نکـــــــــــته |
---|
برای تعیین یک Namespace باید اخرین شناسه سمت راست یک عبارت را به همراه نقطه مربوط حذف کنید برای مثال در مورد عبارت زیر توجه کنید MyCompany.Proframs. MyProgram MyProgram عضوی از یک Namespace با نام MyCompany.programs است |
در صورتی که یک یونیت Namespace صریح خود را حذف کنید و به آن generic unit گفته میشود
یک generic unit به صورت خودکار عضوی از project default namespace خواهد بود
در حقیقت عبارت زیر:
unit Myunit;
باعث خواهد شد که کامپایلر دلفی با Myunit به عنوان عضوی از myCompany.Programs برخورد کند
توجه داشته باشید که project default namespace تاثیری درنام فایل مربوط به generic unit نخواهد داشت
در مورد مثال قبلی دلفی فایلی با نام Myunit.pas را به وجود خواهد آورد
قابل ذکر است که رشتههای مربوط به Namespace ها به حروف بزرگ و کوچک حساس نیستند
اما دلفی در مورد نام فایل ها پیغام های خطا و … رشته مورد نظر را با توجه به حروف بزرگ و کوچک
مورد استفاده قرار خواهد داد