menusearch
javapro.ir
جستجو
۱۳۹۵/۸/۹ یکشنبه
(3)
(0)
♨️ جلسه هفدهم - متدها در جاوا
♨️ جلسه هفدهم - متدها در جاوا

داریم به ایستگاه های آخر آموزش های پایه ای جاوا می رسیم! ایستگاه شماره 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);
        int a = input.nextInt();
        int b = input.nextInt();
        int sum = a + b;
        System.out.println(sum);

    }

}


خروجی:این برنامه را بصورت زیر تست کرده ایم.

 

5
10
15


✔ دو عدد 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() {
        Scanner input = new Scanner(System.in);
        int a = input.nextInt();
        int b = input.nextInt();
        int sum = a + b;
        System.out.println(sum);

    }

    public static void main(String[] args) {

        total();

    }

}


خروجی: این برنامه را بصورت زیر تست کرده ایم.

 

99
2
101


✔  دو عدد 99 و 2  از ورودی گرفته و حاصل جمع آنها 101 را در خروجی چاپ کرده است.


✔  در این مثال یک متد در بدنه کلاس خود به نام total ایجاد کرده و دستورات مورد نظر را درون آن پیاده سازی کرده ایم. و در متد main کلاس ،متد total را صدا زده ایم.


✔  وقتی متد total در متد main صدا زده شود،دستورات درون متد total خط به خط اجرا می شود.


✔   همون طور که در متد main مشاهده میکنید خبری از شلوغی نیست تنها نام یک متد را صدا زده ایم که برامون عملیاتی را اجرا میکند.


✔    شاید بگید کلاس مون شلوغ شده!!! بدنه کلاس محل تعریف متدها و متغیر های برنامه مورد نظر ما می باشد و برای این کار ساخته شده! چون هر کلاس تنها یک متد main داره و لازمه اجرای برنامه دارا بودن متد main  می باشد باید در حد امکان بصورت منظم و مرتب کد های خود را درونش بزنیم که با زیاد شدن کدبرنامه دچار سردرگمی نشویم.


✔   قصد ما تا اینجا فقط درک تفاوت دستورات برنامه درون متد و خارج از متد بود  ,پیاده سازی ، ایجاد و جزییات متد ها رو در ادامه آموزش بررسی میکنیم.
حالا ما در ادامه اموزش یاد میگیریم که چطور  متدی ایجاد کنیم که :

•    یک مقدار برامون برگرداند.
•    بدون برگردادن مقدار باشد.
•    به عنوان ورودی پارامتر بگیرد.
•    بدون ورودی و پارامتر باشد.

 

ایجاد متد
مثال زیر و توضیح پیرامون ترکیب و جز به جز متد را در نظر بگیرید:

 

public static int methodName(int a, int b) {
// body
}


 جز به جز این متد بصورت زیر است:


•    public static : اصلاح کننده (modifier)، سطح دسرسی به این متد public و نوع استفاده static می باشد.


•    int نوع مقداری که بر میگرداند، از نوع عدد صحیح می باشد.


•    methodName نام متد


•    int a, int b پارامترهای ورودی متد (پارامترها نوعی متغیر محلی می باشند که تنها در بدنه متد قابل استفاده هستند)


شکل کلی پیاده سازی یک متد بصورت زیر است:

 

modifier returnType nameOfMethod (Parameter List) {
 // method body
}

 

💡 Modifier (اصلاح کننده سطح دسرسی): به معنای نوع دسرسی به متد و گزینه های استفاده از متد می باشد.


💡 returnType (نوع مقداری که متد بر میگرداند): متد ممکن است یک مقدار برگرداند یا هیچ مقداری برنگرداند.


💡 nameOfMethod (نام متد): تعیین نام برای متد،نام متد و لیست پارامترهای متد امضا متد می باشند.


💡 Parameter List (پارامتر های متد): لیست پارامترهای متد شامل نوع پارامترها،تعداد پارامترها (پارامتر نوعی متغیر محلی می باشد که تنها در بدنه متد قابل استفاده است) داشتن پارامتر برای یک متد اختیاری است یعنی با توجه به نیاز ، یک متد می تواند چندین پارامتر براش تعیین کنیم یا این که بدون پارامتر متد خود را تعریف کنیم.


💡 method body (بدنه متد): دستورات مورد نظر خود را درون بدنه متد تعریف میکنیم.


مثال:در زیر سورس کد یک متد به نام minFunction را مشاهده میکنید.این متد دو پارامتر n1,n2 را میگیرد و مینیمم بین آن دو را محاسبه و برمیگرداند.

 

public static int minFunction(int n1, int n2) {
int min;
if (n1 > n2)
min = n2;
else
min = n1;

return min;
}


✔  همان طور که گفتیم یک متد می تواند مقداری را بعد از صدازدن و استفاده از ان به ما برگرداند یا نه هیچ مقداری را برنگرداند! برای برگردادن مقدار در یک متد باید ابتدا نوع ان را مشخص کرد، نوعی که متد هیچ مقداری را برنمیگرداند از نوع void می باشد و نوعی که مقدار به ما برمیگرداند می تواند با توجه به نیاز از نوع عدد صحیح،اعشاری،رشته،کاراکتر،شی و...باشد.


✔   بعد از تعیین نوع حالا بعد از عملیاتی که در بدنه متد انجام دادیم و قصد ما برگردادن نتیجه محاسباتی که در متد صورت گرفته،برای برگردادن نتیجه یا هر مقداری که مدنظر باشد از کلمه return استفاده میکنیم:

 

return value;


💡 نکته مهم : مقداری که در متد خود جلوی کلمه return استفاده میکنیم باید نوعش از نوع متدی باشه که در آن قرار داره:
مثلا در مثال بالا تابع minFunction  از نوع int می باشد پس مقداری که در این متد برگردانده می شود باید از نوع int باشد که در مثال بالا متغیر محلی min از نوع int هستش چون متدی که در ان قرار داره از نوع int  می باشد.

 

...ادامه این جلسه آموزشی را می توانید بصورت کتاب الکترونیکی (PDF شده) در لینک زیر دریافت کنید.



این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید)

آموزش آسان و ساده زبان برنامه نویسی جاوا

لینک دانلود

 

 


نشر این مطلب با ذکر منبع (لینک سایت) بلامانع است.
برای با خبر شدن از جدیدترین مطالب آموزشی جاوا عضو کانال تلگرام ما شوید.

instagram
نظرات کاربران
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

بستن
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

1 نظر
zahra.s
شنبه نهم دی ۹۶
پاسخ
(0)
()
zahra.s
واقعا عاليه ، خيلي روان و پايه اي با نکات جزء به جزء. خيلي خيلي ممنونم
طراحی سایتطراحی سایتسایت سازسایت سازفروشگاه سازفروشگاه ساز