داریم به ایستگاه های آخر آموزش های پایه ای جاوا می رسیم! ایستگاه شماره 17! ایستگاه متدها!ما در جلسات قبل بصورت سطحی و گذرا نگاهی به متدها در جاوا داشتیم حالا در این جلسه قصد داریم مفصل بهش بپردازیم چون خیلی خیلی با متدها کار داریم.
یک متد در جاوا مجموعه ای از دستوراتی است که عملیاتی را برای ما انجام میدهند.
برای مثال، شما وقتی متد ()System.out.println را صدا میزنید،در واقع این متد چندین دستور را در خودش اجرا میکند تا دستور چاپ پیام در خروجی را نمایش دهد.
یکی از کاربرد های متدها نظم بخشیدن به دستورات برنامه نویسی مان هستش،برای مثال نیاز به دستوری داریم که دو عدد از ورودی بگیرد و حاصل جمع آنها را در خروجی چاپ کند. راه اول بصورت زیر است:
package javalike; import java.util.Scanner; public class Seventeenth_Session { public static void main(String[] args) { Scanner input = new Scanner(System.in); } } |
خروجی:این برنامه را بصورت زیر تست کرده ایم.
5 |
✔ دو عدد 5 و 10 را به عنوان ورودی به برنامه دادیم و حاصل جمع این دو عدد 15 شد.
✔ در این مثال تمام کد برنامه خود را در متد main کلاس خود نوشتیم. خب در نگاه اول این که مشکلی نداره! نظمشم که خیلی خوبه! تازه در متد main کلاسمون قرار داره! پس ایرادش چیه؟!!!!! درسته ظاهرا نظم خوبه داره، اما اگه همه کدهای برنامه خود را در متد main بزنیم تصور کنید 1000 دستور خاص که عملیاتی را برامون انجام میدهند را مستقیم و پشت سر هم در متد main کلاس پیاده سازی کنیم مثلا دستور اول حاصل جمع دو عدد دستور دوم قدر مطلق دو عدد دستور سوم میانگین نمرات دانشجویان دستور چهارم به توان 2 رساندن یک عدد و.... ،وقتی همه این دستورات پشت سر هم قرار میگیره حتی اگه خودمون هم کدش رو زده باشیم بعد از مدتی قاطی میکنیم که این دستورات چکارهایی برنامون انجام میدهند یا این دستور مربوط به کدام بخش از عملیاتی که ذکر کردیم هست؟و....شاید بگید کامنت گذاری(قرار دادن توضیح)می کنیم بازم جالب نیست تمام کدامون در متد main پشت سر هم بزنیم! در کل حرفه ای نیست! قشنگ نیست! 😊 بر فرض خواستیم دستور مثلا عملیات فاکتوریل را بین 1000 دستور عملیاتیپیدا کنیم تصورش واقعا سخته و به زحمت میندازمون 😊
😊 راه کار چیه؟ متدها ما میایم برای هر دستور عملیاتی یک متد تعریف میکنیم و ان دستور را در بدنه متد پیاده سازی میکنیم و بعد با توجه به نیاز تنها نام متد را صدا میزنیم که برامون دستور را اجرا کند مثلا برای هزار دستور عملیاتی 1000 متد تعریف میکنیم که هر وقت نیاز به دستور خاص داشتیم دیگه با متدش کار کنیم نه دستورات درونش!!! مثلا همین متد ()System.out.println ما با دستورات درونش دیگه کاری نداریم تنها صداش میزنیم و برامون کار انجام میده!فرض کنید هربار که میخواستیم یک پیام چاپ کنیم مستقیم دستورات درون این متد را در برناممون مینوشتیم تصور کنید چه کار طاقت فرسایی میشد و چقدر تعداد خط کد برنامون افزایش مییافت.پس اینجاست که درمی یابیم که متد ها چقدر مفید و با ارزش میباشند 😊
حالا همین مثال قبل را با راه دوم یعنی پیاده سازی دستورات درون متد بررسی میکنیم:
package javalike; import java.util.Scanner; public class Seventeenth_Session { public static void total() { } public static void main(String[] args) { total(); } } |
خروجی: این برنامه را بصورت زیر تست کرده ایم.
99 |
✔ دو عدد 99 و 2 از ورودی گرفته و حاصل جمع آنها 101 را در خروجی چاپ کرده است.
✔ در این مثال یک متد در بدنه کلاس خود به نام total ایجاد کرده و دستورات مورد نظر را درون آن پیاده سازی کرده ایم. و در متد main کلاس ،متد total را صدا زده ایم.
✔ وقتی متد total در متد main صدا زده شود،دستورات درون متد total خط به خط اجرا میشود.
✔ همون طور که در متد main مشاهده میکنید خبری از شلوغی نیست تنها نام یک متد را صدا زده ایم که برامون عملیاتی را اجرا میکند.
✔ شاید بگید کلاس مون شلوغ شده!!! بدنه کلاس محل تعریف متدها و متغیر های برنامه مورد نظر ما است و برای این کار ساخته شده! چون هر کلاس تنها یک متد main داره و لازمه اجرای برنامه دارا بودن متد main است باید در حد امکان بصورت منظم و مرتب کد های خود را درونش بزنیم که با زیاد شدن کدبرنامه دچار سردرگمی نشویم.
✔ قصد ما تا اینجا فقط درک تفاوت دستورات برنامه درون متد و خارج از متد بود ,پیاده سازی، ایجاد و جزییات متد ها رو در ادامه آموزش بررسی میکنیم.
حالا ما در ادامه اموزش یاد میگیریم که چطور متدی ایجاد کنیم که :
• یک مقدار برامون برگرداند.
• بدون برگردادن مقدار باشد.
• به عنوان ورودی پارامتر بگیرد.
• بدون ورودی و پارامتر باشد.
در دوره مبانی برنامه نویسی جاوا به صورت ویدئویی به موضوع متدها در جاواپرداخته ایم.
ایجاد متد
مثال زیر و توضیح پیرامون ترکیب و جز به جز متد را در نظر بگیرید:
public static int methodName(int a, int b) { |
جز به جز این متد بصورت زیر است:
• public static : اصلاح کننده (modifier)، سطح دسرسی به این متد public و نوع استفاده static است.
• int نوع مقداری که بر میگرداند، از نوع عدد صحیح است.
• methodName نام متد
• int a, int b پارامترهای ورودی متد (پارامترها نوعی متغیر محلی میباشند که تنها در بدنه متد قابل استفاده هستند)
شکل کلی پیاده سازی یک متد بصورت زیر است:
modifier returnType nameOfMethod (Parameter List) { |
💡 Modifier (اصلاح کننده سطح دسرسی): به معنای نوع دسرسی به متد و گزینه های استفاده از متد است.
💡 returnType (نوع مقداری که متد بر میگرداند): متد ممکن است یک مقدار برگرداند یا هیچ مقداری برنگرداند.
💡 nameOfMethod (نام متد): تعیین نام برای متد،نام متد و لیست پارامترهای متد امضا متد میباشند.
💡 Parameter List (پارامتر های متد): لیست پارامترهای متد شامل نوع پارامترها،تعداد پارامترها (پارامتر نوعی متغیر محلی است که تنها در بدنه متد قابل استفاده است) داشتن پارامتر برای یک متد اختیاری است یعنی با توجه به نیاز، یک متد میتواند چندین پارامتر براش تعیین کنیم یا این که بدون پارامتر متد خود را تعریف کنیم.
💡 method body (بدنه متد): دستورات مورد نظر خود را درون بدنه متد تعریف میکنیم.
مثال:در زیر سورس کد یک متد به نام minFunction را مشاهده میکنید.این متد دو پارامتر n1,n2 را میگیرد و مینیمم بین آن دو را محاسبه و برمیگرداند.
public static int minFunction(int n1, int n2) { return min; |
✔ همان طور که گفتیم یک متد میتواند مقداری را بعد از صدازدن و استفاده از ان به ما برگرداند یا نه هیچ مقداری را برنگرداند! برای برگردادن مقدار در یک متد باید ابتدا نوع ان را مشخص کرد، نوعی که متد هیچ مقداری را برنمیگرداند از نوع void است و نوعی که مقدار به ما برمیگرداند میتواند با توجه به نیاز از نوع عدد صحیح،اعشاری،رشته،کاراکتر،شی و...باشد.
✔ بعد از تعیین نوع حالا بعد از عملیاتی که در بدنه متد انجام دادیم و قصد ما برگردادن نتیجه محاسباتی که در متد صورت گرفته،برای برگردادن نتیجه یا هر مقداری که مدنظر باشد از کلمه return استفاده میکنیم:
return value; |
💡 نکته مهم : مقداری که در متد خود جلوی کلمه return استفاده میکنیم باید نوعش از نوع متدی باشه که در آن قرار داره:
مثلا در مثال بالا تابع minFunction از نوع int است پس مقداری که در این متد برگردانده میشود باید از نوع int باشد که در مثال بالا متغیر محلی min از نوع int هستش چون متدی که در ان قرار داره از نوع int است.
...ادامه این جلسه آموزشی را میتوانید بصورت کتاب الکترونیکی (PDF شده) در لینک زیر دریافت کنید.
این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید)
لینک دانلود
نشر این مطلب با ذکر منبع (لینک سایت) بلامانع است.
برای با خبر شدن از جدیدترین مطالب آموزشی جاوا عضو کانال تلگرام ما شوید.
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
دوره های آموزشی برنامه نویسی
انجام پروژه های برنامه نویسی
تدریس خصوصی برنامه نویسی
بیش از 7 سال از فعالیت جاواپرو میگذرد
جاواپرو دارای مجوز نشر دیجیتال از وزارت فرهنگ و ارشاد اسلامی است
جهت ارتباط مستقیم با جاواپرو در واتساپ و تلگرام :
09301904690