آموزش سی شارپ – درس چهارم

خانه / برنامه نویسی و شبیه سازی / آموزش سی شارپ – درس چهارم

آموزش سی شارپ – درس چهارم

آموزش سی شارپ - درس چهارمReviewed by رضا فرضی on Mar 18Rating: 5.0آموزش سی شارپ - درس چهارمآموزش سی شارپ - درس چهارم

[button color=”blue” size=”medium” link=”http://irchemeng.ir/1393/01/c-project-3/” ]<< پروژه سوم[/button]          [button color=”red” size=”medium” link=”http://irchemeng.ir/c/” ]لیست دروس[/button]          [button color=”blue” size=”medium” link=”http://irchemeng.ir/1392/12/c-project-2/” ]پروژه دوم >>[/button]

[divider]

 

آموزش سی شارپ – درس چهارم

امیدوارم با استفاده از توضیحات و دو پروژه ی ارائه شده در قسمت های قبلی تا حدودی با مفهوم فضای نام، کلاس، شی، متد و خاصیت آشنا شده باشید.در این قسمت از آموزش قصد دارم نکات تکمیل کننده ای از بحث های قبل را ارائه کنم.
فضای نام محلی برای نگه داری کلاس ها و در حقیقت مجموعه ای از چند کلاس است که ویژگی های مشتری دارند.هدف از ایجاد کلاس ها دسترسی آسان و سریع برنامه نویس به مجموعه ای از کد هاست.با توجه به وجود تعداد زیادی کلاس، آن ها با توجه به ویژگی هایی که دارند در فضاهای نام جداگانه ای طبقه بندی می کنند.یکی از فواید این طبقه بندی این است که امکان تولید کلاس هایی با نام یکسان بوجود می آید که این کلاس ها باید در فضاهای نام متفاوتی قرار بگیرند.در یک فضای نام دو کلاس با نام یکسان نمی توانند وجود داشته باشند.
کلاس ها دارای دو نوع سطح دسترسی public و internal هستند که در هنگام تعریف یک کلاس نوع دسترسی آن را نیز تعیین می کنیم.سطح دسترسی public به این معنی است که کلاس خارج از فضای نامی که در آن قرار دارد قابل استفاده است و سطح دسترسی internal مشخص می کند که استفاده از کلاس فقط در داخل همان فضای نام قابل استفاده است.اگر در هنگام تعریف کلاس سطح دسترسی را تعریف نکنید به طور پیش فرض interna در نظر گرفته می شود.
فضای نام ها نیز همانند کلاس ها قابل تعریف هستند.در دو پروژه ی قبل، برای کلاس های خود فضای نامی تعیین نکردیم.در این حالت که برنامه نویس کلاس های خود را بدون تعریف فضای نام برای آن، تعریف می کند خود نرم افزار کلاس ها را در یک فضای نام جنرال یا عمومی قرار می دهد.
برای استفاده از کلاس های موجود، ابتدا می بایست فضای نامی که کلاس در آن فضا وجود دارد را با دستور using فراخوانی می کرد اما برای دو پروژه ی قبل برای استفاده از کلاس هایی که خودمان نوشتیم فضای نامی را فراخوانی نکردیم.دلیل درست عمل کردن برنامه ای که نوشتیم این است که کلاس هایی که در یک فضای نام قرار دارند می توانند به هم دسترسی داشته باشند و نیازی به فراخوانی فضای نام نیست.به عنوان مثال در پروژه اول کلاس P1 و P1Test که از P1 استفاده می کند هر دو در یک فضای نام جنرال قرار گرفته بودند.
Int و یا float انواع داده ای در زبان C# هستند که برای استفاده از آن ها می بایست یک متغیر از آن نوع تعریف کرد.کلاس ها نیز چنین هستند.برای آن که بتوان از یک کلاس استفاده کرد باید یک شی از آن ساخت.دستور زیر برای تولید یک شی از کلاس استفاده می شود:

className obj = new className();

className نام کلاسی است که باید از آن شی تولید گردد و در حقیقت این کلاس نوع داده برای شی تعریف می شود.obj نام شی است و new واژه ای کلیدی برای تولید شی است.className() متدی خاص به نام سازنده ی کلاس است که برای تولید شی به کار می رود.در مورد سازنده ها در ادامه بحث خواهیم کرد.
هر کلاس در بدنه ی خود حاوی اعضایی است.این اعضا عبارتند از:

  • ثابت ها
  • فیلد ها
  • متد ها
  • خواص
  • شاخص بند ها
  • رویدادها
  • عملگرها
  • سازنده ها یا مولد ها
  • مخرب ها

اعضای یک کلاس می توانند دارای دو سطح دسترسی public و private باشند.اگر سطح دسترسی یک عضو تعیین نشود به طور پیش فرض private در نظر گرفته خواهد شد.
در پروژه ی دوم در کلاس خود از خاصیت استفاده کردیم.خاصیت ها در واقع نوعی از متد ها هستند که می توانند داده های خود را مقدار دهند یا مقداری را از داده ی خود بازگردانند.مقدار دهی با دستور set و بازگردانی مقدار با دستور get انجام می گیرد.هنگاهی که یک کد می خواهد خاصیتی را مقدار دهد آن مقدار در value قرار می گیرد و سپس set مقدار درون value را به خاصیت نسبت می دهد.get برای بازگردانی مقدار خاصیت از return استفاده می کند.خاصیت ها می توانند شامل هر دو عمل get و set باشند و یا این که فقط دارای یکی از این دو باشند.هنگامی که یک خاصیت دارای هر دو فرمان get و set برای بازگردانی و نسبت دادن مقدار باشد می توانید از خاصیت های خود پیاده شونده استفاده کنید.به عنوان مثال کد زیر خاصیت خود پیاده شونده ی ChangeName را نشان می دهد و در این حالت نیازی به تعریف متغیر نمونه نیست.

Public string ChangeName {get; set:}

متد ها مجموعه کد هایی بودند که در هنگام فراخوانی می توانند کار خاصی را انجام دهند.متدی که فراخوانی می شود را متد فراخوانی شونده و متدی که آن متد را فراخوانی کرده است متد فراخوان می نامند.هر متد می تواند دارای پارامتر های ورودی و یک مقدار خروجی باشد.در صورتی که یک متد پس از انجام کار خود مقداری را برگرداند باید نوع مقدار در اعلان متد تعریف شود.متد هایی که در اعلان آن ها از عبارت void استفاده می شود مقداری را در خروجی بر نمی گردانند.پارامتر های ورودی هر متد در بین پرانتز هایی در تعریف آن قرار می گیرند.خط کد زیر تعریف متدی را نشان می دهد که دو پارامتر ورودی به نام های x و y دارد و مقدار s را بر می گرداند. هر سه مقدار x,y و s از نوع داده ی int می باشند.

Public int area {int x, int y)
{
Int s;
S=x*y;
Return s;
}

حال می خواهیم در مورد سازنده ها بحث کنیم اما قبل از آن نیاز است که داده ها و انواع آن ها را بهتر بشناسیم.داده ها به دو نوع مقداری و ارجاعی تقسیم می شوند.انواع داده هایی را که تا حالا برای تعریف متغیر ها دیده اید، مانند int و double و … از نوع داده های مقداری هستند و در هر لحظه فقط می توانند شامل یک مقدار باشند. متغیر های ارجاعی حاوی آدرس مکان نگه داری اشیا می باشند که نام متغیر به داده ی موجود در آن اشاره دارد.در پروژه دوم یک شی را از کلاس P2 ایجاد و آدرس ارجاع به شی را در متغیر ObjectP2 که از نوع کلاس P2 بود قرار دادیم.پس در سایر کلاس ها هر وقت که از ObjectP2 استفاده کنیم در واقع به شی کلاس P2 رجوع کرده ایم.
متغیر های نوع ارجایی به صورت پیش فرض با عبارت null که به معنی ارجاع به هیچ چیز است مقدار دهی اولیه می شوند.

[toggle title=”نکته” state=”open” ]مقدار دهی اولیه، مقداری است که در هنگام تعریف یک متغیر به آن داده می شود. در مقدار دهی به یک متغیر رشته ای، مقدار null با مقدار تهی تفاوت دارد.مقدار تهی که با ” ” نشان داده می شود که متغیر دارای رشته یا مقداری نیست. اما null به این موضوع اشاره دارد که متغیر به هیچ شی ای اشاره نمی کند.[/toggle]

و اما در مورد سازنده ها:
هر کلاسی که ایجاد می شود حاوی یک سازنده است که این سازنده می تواند اشیایی که از این کلاس ایجاد می شوند را مقدار دهی اولیه کند.عملگر new در هنگام ایجاد یک شی، فضای مورد نیاز برای شی را مشخص کرده و سازنده ی متناظر با کلاس را احضار می کند.در کد زیر پرانتز های بعد از نام کلاس همان سازنده است که بدون ارگومان ورودی می باشد.

P2 ObjectP2 = new P2();

در صورتی که بخواهید مقدار دهی اولیه متفاوت با مقدار پیش فرض باشد، می توانید آن مقدار دلخواه خود را در بین پرانتز ها وارد کنید.به عنوان مثال در پروژه دوم در صورتی که عبارت “Reza” را بین دو پرانتز وارد کنید آن گاه خاصیت Name با عبارت Reza مقدار دهی اولیه می شود.البته قبل از آن در کلاس P2 باید سازنده را ایجاد کنید.برای این کار می توانید بعد از کد های ایجاد خاصیت کد های زیر را قرار دهید: (به این نکته ی مهم توجه داشته باشید که نام سازنده با نام کلاس حتما باید یکسان باشد)

Public P2(string name)
{
Name=name
}

اگر کلاسی فاقد سازنده باشد متغیر های نمونه ی کلاس به صورت پیش فرض مقدار دهی می شوند.۰ برای انواع عددی، false برای نوع bool و null برای انواع ارجاعی.

[divider]

[button color=”blue” size=”medium” link=”http://irchemeng.ir/1393/01/c-project-3/” ]<< پروژه سوم[/button]          [button color=”red” size=”medium” link=”http://irchemeng.ir/c/” ]لیست دروس[/button]          [button color=”blue” size=”medium” link=”http://irchemeng.ir/1392/12/c-project-2/” ]پروژه دوم >>[/button]

رضا فرضی
رضا فرضی
رضا فرضی هستم متولد 71 در شهرستان دیر استان بوشهر، فارغ التحصیل مقطع کارشناسی رشته مهندسی شیمی دانشگاه خلیج فارس بوشهر و در حال حاضر دانشجوی مقطع ارشد مهندسی شیمی دانشگاه شیراز می باشم..
Recent Posts
نظرات
پینک بگ ها /قوانین

ارسال نظر


*

تماس با ما

پیغام خود را بگذارید تا در سریع ترین زمان پاسخگوی شما باشیم.

قابل خواندن نیست ؟ تغییر دهید.. captcha txt

متن خود را برای جستجو وارد نماید

C#_Pic_www.irchemeng.irC#_Pic_www.irchemeng.ir