آموزش پاسکال شی‌گرا

نحوه معرفی 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 ها به حروف بزرگ و کوچک حساس نیستند
اما دلفی در مورد نام فایل ها پیغام های خطا و … رشته مورد نظر را با توجه به حروف بزرگ و کوچک
مورد استفاده قرار خواهد داد

[adinserter block="1"]
4/5 - (4 امتیاز)

نوشته های مشابه

دیدگاهتان را بنویسید

دکمه بازگشت به بالا