Namespaces ها
اهداف
اين درس به شرح زير ميباشد :
آشنايي با Namespaceü
در زبان C#
چگونگي استفاده از
هدايتگر using (using directive)ü
چگونگيü استفاده
از هدايتگر alias (alias directive)
اعضاي يك Namespace چه هستند؟ü
Namespace ها، المانهاي زبان C# هستند كه شما را در
سازماندهي كردن برنامه، كمك ميكنند. پيادهسازي Namespace ها در كد برنامه بسيار مفيد است چراكه از ايجاد مشكلات مربوط به
استفاده مجدد كد، پيشگيري مينمايد.
چگونگي ايجاد Namespace
به مثال زير توجه نماييد.
|
كد: |
|
//
Namespace اعلان |
مثال 1-6 چگونگي ايجاد يك Namespace را نشان ميدهد. در اين مثال ما با قرار دادن كلمه كليدي namespace در جلوي csharp-persian يك Namespace جديد ايجاد نموديم. مثال 2-6، Namespace هاي تودرتو را نشان ميدهد.
|
كد: |
|
//
Namespace اعلان |
Namespace ها اين امكان را
فراهم ميآورند تا سيستمي جهت سازماندهي كدهاي خود ايجاد نماييد.
يك روش مناسب جهت سازماندهي Namespace هاي
برنامه، استفاده از يك سيستم سلسله مراتبي است. بدين ترتيب كه Namespace هاي عمومي را در بالاي اين
ساختار قرار داده و هر چه در اين ساختار پاينتر ميآييم، Namespace هاي تخصصيتر قرار ميگيرند.
اين سيستم سلسله مراتبي
بوسيله Namespace هاي تودرتو قابل پيادهسازي هستند. اين پيادهسازي در مثال 2-6 نشان داده شده است. با
قرار دادند كدهاي خود در Namespace هاي فرعي ميتوانيد كدهاي خود را سازماندهي نماييد.
|
كد: |
|
//
Namespace اعلان |
مثال
3-6 روش ديگر ايجاد Namespace هاي تودرتو را نشان
ميدهد. همانطور كه در اين مثال مشاهده مينماييد، Namespace تودرتو با قرار دادن عملگر نقطه "."
در بين csharp-persian و tutorial ايجاد شده است. اين مثال از نظر كارآيي دقيقاً همانند مثال 2-6
است و از نظر پيادهسازي آسانتر از آن ميباشد.
فراخواني اعضاي يك Namespace
|
كد: |
|
//
Namespace اعلان |
مثال 4-6 چگونگي فراخواني اعضاي Namespace نشان ميدهد. در ابتداي مثال
4-6، يك Namespace تودرتو اعلان شده است، tutorial
درون csharp-persian، كه داراي كلاس myExample1 و متد myPrint1 ميباشد. متد Main() اين متد را با نام
tutorial.myExample1.myPrint1 فراخواني مينمايد. چون
متد Main() و tutorial درون يك Namespace قرار دارند، ديگر نيازي به استفاده از نام csharp-persian غير ضروري است.
در انتهاي مثال 4-6، يك Namespace ديگر
بصورت
csharp-persian.tutorial آورده شده است. كلاسهاي myExamlpe1 و myExample2 هر دو متعلق به يك Namespace ميباشند،
هرچند ميتواند آنها را مجزا از يكديگر نوشت در حاليكه متعلق به يك Namespace باشند.
درون متد Main()، متد myPrint2 بصورت
tutorial.myExample2.myPrint2 فراخواني شده است. هرچند
كلاس myExample2 خارج از
محدودهايست كه متد myPrint2 فراخواني شده است، نيازي به آمردن نام csharp-persian براي اين فراخواني وجود
ندارد، زيرا هر دو كلاس متعلق به يك Namespace، يعني csharp-persian هستند.
توجه نماييد كه براي هر يك از كلاسهاي myExample1 و myExample2 نامهاي متفاوتي انتخاب شده است،
زيرا هر عضو متعلق به يك Namespace بايد
داراي نام يكتايي باشد. براي متدهاي myPrint1 و myPrint2 ، بعلت سادگي در امر يادگيري اين مطلب، نامهاي
متفاوتي در نظر گرفته شده است. توجه نماييد كه اين دو متد بعلت اينكه در كلاسهاي متفاوتي
قرار دارند، ميتوان نامهاي يكساني برايشان انتخاب نمود، و در اينصورت هيچگونه
تداخلي بين ايندو ايجاد نخواهد شد.
استفاده از
هدايتگر using
|
كد: |
|
//
Namespace اعلان |
در صورتيكه مي خواهيد متدهايي را بدون استفاده از نام كامل
آنها،به همراه نام Namespace، استفاده نماييد،
ميتوانيد از هدايتگر using استفاده نماييد. در مثال 5-6، دوبار از هدايتگر using استفاده
شده است. اولين استفاده از اين هدايتگر، using
System، دقيقاً مشابه به همان چيزي است كع تا كنون در
اين درسها مشاهده نمودهايد. با استفاده از اين هدايتگر ميتوانيد از اعضاي
موجود در System، بدون اينكه نياز به تايپ كلمه System در هربار داشته باشيد، استفاده
نماييد. در myPrint()، كلاس Console عضوي از System است كه داراي متد WriteLine() ميباشد. اگر در ابتداي برنامه از هدايتگر using استفاده نكنيم، بايد براي هر
دفعه استفاده از متد WriteLine()، نام كامل آن يعني
System.Console.WriteLine() را تايپ نماييم.
به طور مشابه، استفاده از using csharp-persian.tutorial امكان
استفاده از اعضاي اين Namespace را، بدون نياز
به تايپ نام كامل آنها فراهم مينمايد. چون در ابتداي برنامه از
هدايتگر using استفاده نمودهايم، در متن برنامه متد myPrint() را بصورت myExample.myPrint() استفاده نمودهايم،
درصورتيكه از هدايتگر using استفاده نميگرديم براي استفاده از اين متد بايد آنرا بصورت csharp-persian.tutorial.myExample.myPrint()
ميآورديم.
استفاده از هدايتگر Alias
|
كد: |
|
//
Namespace اعلان |
در برخي موارد ممكن است با Namespace خاصي روبرو شويد كه داراي نامي طولاني است و
تمايل داشته باشيد تا نام آنرا كوتاهتر نماييد. اين كار با استفاده از ايجاد استعاره (Alias) امكانپذير است. همانطور كه در
مثال 6-6 ملاحظه مينماييد، با استفاده از
csTut =
csharp-persian.tutorial.myExample يك استعاره توليد كردهايم و در
متن برنامه به جاي استفاده از نام طولاني
csharp-persian.tutorial.myExample از نام مستعار آن يعني csTut استفاده نمودهايم. حال از اين نام مستعار در هر
جاي برنامه ميتوان استفاده كرد. ما در اين برنامه در متد Main() استفاده نمودهايم.
همچنين در متد Main()، فراخواني از متد myPrint() مربوط به كلاس AliasDirective صورت
گرفته است. نام اين متد همانند myPrint() موجود در myExample است. علت اينكه ميتوان هر دو اين متدها را همزمان فراخواني
كرد، استفاده از هدايتگر alias براي متد myPrint() مربوط به كلاس myExample است. (csTut.myPrint()) استفاده
از اين روش باعث ميشود تا كامپايلر دريابد كه كدام متد را بايد اجرا نمايد. در صورتيكه
به اشتباه از هدايتگر alias (csTut.myPrint()) استفاده نكنيم، كامپايلر به
اشتباه متد myPrint() مربوط به كلاس AliasDirective را
دوبار اجرا خواهد كرد.
تا اينجا،ما تنها كلاسها را در Namespace ها نشان داديم. Namespace ها انواع ديگري را نيز ميتوانند
در خود داشته باشند كه در زير مشاهده مينماييد :
Classes
Structures
Interfaces
Enumerations
Delegates
خلاصه
در اين درس با Namespace آشنا شديد و فراگرفتيد كه چگونه Namespace خود را اعلان نماييد. اگر
نخواهيد در هربار استفاده از متدها يا اعضاي يك Namespace، نام كامل آنها را استفاده كنيد،
بايد از هدايتگر using استفاده نماييد. در صورتيكه بخواهيد بجاي استفاده از
نام طولاني يك Namespace، از نامي ك.وتاهتر استفاده كنيد، بايد از
هدايتگر استعارهاي (Alias Directive) استفاده نماييد
انجام پروژه های برنامه نویسی