WEBVTT

00:00.200 --> 00:02.330
به بخش متدها خوش آمدید.

00:02.330 --> 00:08.090
در این بخش ما قرار است متدها را بررسی کنیم و نگاهی داشته باشیم به اینکه چه کاری انجام می‌دهند و چطور می‌توانیم از آن‌ها استفاده کنیم.

00:08.090 --> 00:12.830
و آن‌ها در هر زبان برنامه‌نویسی شیء‌گرا فوق‌العاده مهم هستند.

00:12.830 --> 00:20.390
و ما قرار است شروع کنیم با بررسی تعریف آن‌ها، که از مستندات رسمی مایکروسافت است.

00:20.390 --> 00:21.260
مایکروسافت.

00:21.290 --> 00:24.770
یک متد یک بلوک کد است که شامل مجموعه‌ای از دستورات می‌باشد.

00:24.770 --> 00:31.550
یک برنامه باعث می‌شود دستورات با فراخوانی متد و مشخص کردن هر آرگومان مورد نیاز متد اجرا شوند.

00:31.550 --> 00:32.390
آرگومان‌ها.

00:32.390 --> 00:37.400
در سی‌شارپ، هر دستور اجرا شده در بستر یک متد انجام می‌شود.

00:37.400 --> 00:44.090
 متد اصلی نقطه ورود برای هر برنامه سی‌شارپ است، و زمانی که برنامه شروع می‌شود توسط
 یا همان CLR فراخوانی می‌شود  Common Language Runtime

00:44.090 --> 00:52.040
و تا اینجا ما یک متد دیده‌ایم که دقیقا همین کار را انجام می‌دهد.

00:52.040 --> 00:56.450
آن متد Main است، و هر زمان که برنامه را اجرا کنیم شروع به کار می‌کند.

00:56.450 --> 01:02.780
پس ما از آن استفاده کرده‌ایم و هنوز متد مخصوص خودمان را ایجاد نکرده‌ایم، اما در ویدئوهای بعدی این کار را انجام خواهیم داد.

01:02.780 --> 01:07.520
اما قبل از هر چیز، بیایید نگاهی بیندازیم به اینکه سینتکس یک متد چگونه به نظر می‌رسد.

01:07.520 --> 01:10.100
ابتدا مشخص‌کننده دسترسی را دارید.

01:10.100 --> 01:13.250
سپس نوع بازگشتی، و نام متد.

01:13.340 --> 01:16.490
سپس داخل پرانتزها لیست پارامترها را دارید.

01:16.490 --> 01:18.560
و در نهایت بدنه متد را دارید.

01:18.560 --> 01:24.920
و مثل همیشه هنگام ساخت کلاس‌ها و متدها، همانطور که قبلاً توضیح دادم، شما آکولاد باز 

01:24.920 --> 01:27.380
و آکولاد بسته را دارید.

01:27.380 --> 01:28.940
پس این سینتکس است.

01:28.940 --> 01:30.830
اما همه این موارد چه هستند؟

01:30.830 --> 01:32.330
مشخص‌کننده دسترسی چیست؟

01:32.330 --> 01:33.380
نوع بازگشتی چیست؟

01:33.380 --> 01:35.450
نام متد چیست و غیره.

01:35.450 --> 01:43.280
و یک توضیح عالی در این مورد در Tutorials Point وجود دارد، و آن‌ها توضیح خیلی خوبی 

01:43.280 --> 01:44.810
در مورد مشخص‌کننده دسترسی داده‌اند.

01:44.810 --> 01:50.240
این مشخص می‌کند که یک متغیر یا متد از یک کلاس دیگر قابل مشاهده باشد یا خیر.

01:50.240 --> 01:58.220
یعنی زمانی که چندین کلاس ایجاد می‌کنید، می‌توانید به متدهایی دسترسی داشته باشید که مشخص‌کننده دسترسی خاصی دارند 

01:58.220 --> 02:00.920
و به بقیه دسترسی نخواهید داشت.

02:00.920 --> 02:03.860
پس چندین نوع مشخص‌کننده دسترسی وجود دارد.

02:03.860 --> 02:05.120
برای مثال، public.

02:05.120 --> 02:09.560
public اگر از 
 استفاده کنید، می‌توانید از یک کلاس دیگر به آن متد دسترسی داشته باشید.

02:09.560 --> 02:12.140
اگر مثلاً از private استفاده کنید، نمی‌توانید.

02:12.140 --> 02:17.720
و مشخص‌کننده‌های دسترسی دیگری هم وجود دارند که بعداً در دوره آن‌ها را پوشش خواهیم داد. سپس نوع بازگشتی.

02:17.720 --> 02:18.290
نوع بازگشتی.

02:18.320 --> 02:21.200
یک متد ممکن است مقداری را برگرداند، و ممکن است هم نه.

02:21.200 --> 02:22.280
ضرورتی ندارد.

02:22.310 --> 02:28.010
نوع بازگشتی همان نوع داده‌ای است که متد برمی‌گرداند.

02:28.010 --> 02:34.430
یعنی اگر می‌خواهید متد چیزی برگرداند، باید مشخص کنید که چه نوع داده‌ای قرار است بازگردانده شود.

02:34.430 --> 02:37.730
برای مثال اگر می‌خواهید یک عدد برگردد، می‌توانید از integer استفاده کنید.

02:37.730 --> 02:42.020
اگر متد هیچ مقداری را برنگرداند، نوع بازگشتی آن void است.

02:42.260 --> 02:46.730
پس در بعضی موارد متدی فقط باید کدی را اجرا کند و چیزی برنگرداند.

02:46.730 --> 02:51.680
در این حالت به‌جای integer یا string یا double یا چیزهای مشابه، از void استفاده می‌کنید.

02:51.680 --> 02:59.390
سپس نام متد را دارید.

03:00.860 --> 03:05.210
نام متد یک شناسه یکتا است و به حروف بزرگ و کوچک حساس می‌باشد.

03:05.210 --> 03:09.650
این نام نمی‌تواند با هیچ شناسه دیگری که در کلاس تعریف شده یکسان باشد.

03:09.650 --> 03:17.120
پس باید یک نام خاص و یکتا بسازید، و منظور از حساس بودن به حروف این است که 

03:17.120 --> 03:20.690
می‌توانید از حروف بزرگ استفاده کنید و غیره.

03:20.690 --> 03:28.040
اما بهترین شیوه این است که با یک حرف بزرگ شروع کنید، و بقیه حروف معمولاً 

03:28.100 --> 03:28.820
کوچک باشند.

03:28.820 --> 03:32.480
driveCar مگر در مواردی مانند 
 که در آن حرف C هم باید بزرگ نوشته شود.

03:32.480 --> 03:36.650
در این صورت حرف C را هم به صورت بزرگ می‌نویسید.

03:36.650 --> 03:40.850
سپس لیست پارامترها را دارید که داخل پرانتز قرار می‌گیرند.

03:40.850 --> 03:45.080
پارامترها برای ارسال و دریافت داده از یک متد استفاده می‌شوند.

03:45.600 --> 03:51.480
لیست پارامترها به نوع، ترتیب و تعداد پارامترهای یک متد اشاره دارد.

03:51.510 --> 03:53.250
پارامترها اختیاری هستند.

03:53.250 --> 04:00.840
یعنی ممکن است یک متد هیچ پارامتری نداشته باشد، که در این صورت ورودی به متد وجود ندارد و آن ورودی‌ها همان پارامترها هستند.

04:00.840 --> 04:02.730
و شما می‌توانید چیزی به متد بدهید و چیزی دریافت کنید.

04:02.730 --> 04:06.360
و آن همان نوع بازگشتی است.

04:06.360 --> 04:07.470
که به‌زودی آن را خواهیم دید.

04:07.470 --> 04:10.860
پس ما یک مثال خواهیم داشت که می‌توانید لیست پارامترها و نوع بازگشتی را ببینید.

04:10.860 --> 04:15.090
و سپس بدنه متد.

04:15.090 --> 04:16.350
این بخش شامل مجموعه‌ای از دستورالعمل‌هاست که برای انجام فعالیت مورد نیاز لازم هستند.

04:16.350 --> 04:20.880
و در واقع دقیقاً همان چیزی است که متد باید اجرا کند.

04:20.880 --> 04:25.410
پس یک متد باید مقداری کد را اجرا کند.

04:25.410 --> 04:27.810
و هر زمان آن متد را فراخوانی کنید باید همیشه همان کد اجرا شود.

04:27.810 --> 04:31.830
پس بیایید نگاهی به یک مثال داشته باشیم.

04:31.830 --> 04:33.930
اینجا مثالی داریم که من یک متد ایجاد کرده‌ام با نام public int add.

04:33.930 --> 04:40.740
public مشخص‌کننده دسترسی است که یعنی این متد می‌تواند از کلاس‌های دیگر هم استفاده شود.

04:40.740 --> 04:46.950
فعلاً این موضوع برای ما تفاوتی ندارد چون هنوز چندین کلاس ایجاد نکرده‌ایم، اما بعداً این کار را خواهیم کرد.

04:46.950 --> 04:52.080
سپس int را داریم که نوع بازگشتی است.

04:52.080 --> 04:57.030
پس این متد یک عدد صحیح را بازمی‌گرداند.

04:57.030 --> 05:01.320
سپس نام متد را داریم، که در این مثال add است.

05:01.320 --> 05:03.030
این متد باید دو مقدار را با هم جمع بزند، و این دو مقدار همان پارامترها هستند.

05:03.030 --> 05:09.900
یعنی int num1 و int num2.

05:13.620 --> 05:17.070
و نکته مهم این است که نوع داده را مشخص کنید.

05:17.070 --> 05:20.490
سپس نام پارامتر را وارد کنید.

05:20.490 --> 05:24.360
آن‌ها را با ویرگول از هم جدا می‌کنید و ادامه می‌دهید.

05:24.360 --> 05:27.840
پس می‌توانید چندین پارامتر مختلف داشته باشید.

05:27.840 --> 05:29.220
لزومی ندارد فقط دو تا باشند.

05:29.250 --> 05:33.390
می‌تواند یکی باشد، یا حتی پنجاه تا، هرچند.

05:33.390 --> 05:38.430
اما معمولاً در عمل بیش از ۵ یا ۶ پارامتر استفاده نمی‌کنید.

05:38.430 --> 05:40.860
ولی می‌تواند هر تعدادی که بخواهید باشد.

05:40.860 --> 05:41.400
خیلی خب.

05:41.400 --> 05:46.950
و سپس کاری که اینجا می‌کنید این است که دو عدد دارید و بعد پرانتز بسته می‌شود.

05:46.950 --> 05:48.870
و سپس آکولاد باز می‌کنید.

05:48.870 --> 05:53.100
و داخل آکولادها محتوای متد یا همان بدنه متد را دارید.

05:53.100 --> 05:55.890
و در اینجا کد را اجرا می‌کنید.

05:55.890 --> 06:03.630
پس هر زمان که یک نوع داده دارید، مثلاً integer، باید چیزی را برگردانید که از همان نوع داده باشد.

06:03.630 --> 06:04.830
در مثال ما، مقدار بازگشتی result است و result یک عدد صحیح می‌باشد که برابر است با num1 به علاوه num2.

06:04.830 --> 06:13.950
پس این متد یک مثال ساده از متدی است که دو مقدار را جمع می‌کند و نتیجه آن دو مقدار را برمی‌گرداند.

06:13.980 --> 06:20.340
یعنی مجموع آن دو مقدار.

06:20.340 --> 06:21.240
پس همانطور که می‌بینید این یک مثال ساده است.

06:21.240 --> 06:23.160
و حتی می‌توانید کد را کمی خلاصه‌تر کنید.

06:23.160 --> 06:25.770
می‌توانید آن مرحله اضافی را حذف کنید.

06:25.770 --> 06:29.220
و به سادگی بنویسید return num1 + num2.

06:29.220 --> 06:32.340
پس دیگر نیازی به آن مرحله اضافه نخواهد بود.

06:32.340 --> 06:35.820
البته می‌توانید برای خوانایی بهتر آن مرحله را اضافه کنید.

06:35.850 --> 06:39.750
اما در هر صورت، در ویدئوی بعدی به چندین مثال مختلف نگاه خواهیم کرد.

06:39.750 --> 06:45.810
در ویدئوی بعدی قرار است یک مثال void بسازیم که چیزی برنگرداند.

06:45.810 --> 06:49.440
و سپس نگاهی خواهیم داشت به متدهایی که مقداری را برمی‌گردانند و غیره.

06:49.440 --> 06:54.210
خیلی خب.

06:59.610 --> 07:01.980
پس این فقط بخش تئوری بود.

07:01.980 --> 07:07.710
بیایید به سراغ دمو برویم و نگاهی داشته باشیم به اینکه با متدها چه کار می‌توانیم انجام دهیم و هدف آن‌ها چیست.

