در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

آموزش جاوا (Java) قسمت 23 : تعریف و استفاده از متدها قسمت یک

با سلام به همه دوستان وهمراهان Itpro در ادامه مباحث جاوا به یکی از مهمترین بخش های برنامه نویسی جاوا می رسیم. اگر شما بخواهید هر برنامه ای بنویسید مجبور هستید از متدها استفاده کنید. برای مثال وقتی که برنامه ای شروع می کنید دستورات خود را در داخل متدی به نام main می نویسید و برای چاپ اطلاعات خود در صفحه نمایش از متد دیگری به نام println استفاده می کنید. در این مطلب قصد داریم که نحوه تعریف متد ها و انواع آنها و نحوه استفاده از آنها را شرح دهیم. متدها در جاوا مجموعه دستورالعمل هایی هستند که برای اجرای یک عملیات خاص در یک گروه کنار هم نوشته شده اند. برای مثال وقتی که ما متد System.out.println() را فراخوانی می کنیم در واقع چندین دستور اجرا می شود تا یک پیام در صفحه نمایش نشان داده شود. در این مطلب نشان خواهیم داد که چگونه می توان یک متد ساخت که یک مقدار برگرداند و یا هیچ مقداری برنگرداند یا آرگومان ورودی داشته باشد یا نداشته باشد.

ساخت متد

شکل کلی ساخت یک متد مانند کد زیر است که در ادامه هرکدام از بخش های آن را توضیح خواهیم داد:

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

در کد بالا کلمه های public , static دو modifier هستند که modifier ها را در معرفی Modifierها در جاوا توضیح دادیم. سپس نوع داده int آورده شده است. این نوع داده مشخص می کند که نوع داده بازگشتی متد از چه نوعی می باشد. methodName نام متد می باشد که این نام متد از قواعد نامگذاری متغیر ها که قبلا توضیح داده شد پیروی می کند. a,b پارامترهای ورودی هستند که باید هنگام تعریف متد مشخص کنیم از چه نوعی هستند. دقت داشته باشید که این متد دارای دو عدد پارامتر ورودی از نوع int می باشد که متدها می توانند هیچ یا چند پارامتر ورودی داشته باشند و نوع آنها می تواند از انواع مختلف داده باشد. کلیه دستورات مربوط به متد می توانند داخل method body نوشته می شوند. برای درک مطالبی که گفته شد مثالی در زیر آورده شده است که یک تابع را تعریف کرده ایم که دارای 2 ورودی است که کوچکترین مقدار بین این دو ورودی را پیدا کرده و برمی گرداند.

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

   return min; 
}

با عبارت return ما مقدار بازگشتی را اعلام می کنیم و وقتی اجرای برنامه به این قسمت رسید از متد خارجی می شود.

فراخوانی متدها

برای این که از یک متد استفاده کنیم باید آن را فراخوانی کنیم یا به عبارت دیگر آن را صدا بزنیم. دو راه برای فراخوانی یک متد وجود دارد. زمانی که متد یک مقدار را برمی گرداند و زمانی که متد هیچ مقداری را برنمی گرداند. فرایند فراخوانی متدها آسان است . زمانی که یک برنامه یک متد را فراخوانی می کند کنترل اجرای برنامه به ابتدای متد فراخوانی شده می رود و آن را اجرا می کند تا زمانی که کنترل اجرا به یکی از حالت های زیر برسد. به خطی برسد که عبارت return دارد یا به علامت { که نشان دهنده اتمام متد است برسد به عبارت دیگر بلوک متد تمام شود. پس از اجرای متد کنترل برنامه به خطی که متد را فراخوانی کرده بود باز می گردد. برای این که متدی هیچ مقدار بازگشتی نداشته باشد نوع آن را هنگام تعریف متد از نوع void انتخاب می کنیم. در متدهایی که هیچ مقداری برنمی گردانند می توان return نگذاشت. همچنین اگر از return استفاده کنیم در جلوی آن چیزی نمی نویسیم. برای مثال کد زیر هیچ مقداری را برنمی گرداند.

System.out.println("This is tosinso.com!");

متدی که مقداری را برمی گرداند می تواند به شکل زیر باشد:

int result = sum(6, 9);

در مثال زیر کدی آورده شده است که نحوه تعریف متد و نحوه استفاده از آن را نشان می دهد.

public class ExampleMinNumber{
   
   public static void main(String[] args) {
      int a = 11;
      int b = 6;
      int c = minFunction(a, b);
      System.out.println("Minimum Value = " + c);
   }

   /** returns the minimum of two numbers */
   public static int minFunction(int n1, int n2) {
      int min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;

      return min; 
   }
}

خروجی کد بالا به شکل زیر خواهد بود:

inimum value = 6

در مثال زیر نحوه رفتار با متد های void را نشان می دهیم. دقت داشته باشید که در متدهای از نوع void متد را به تنهایی در یک خط می نویسیم.

ublic class ExampleVoid {

   public static void main(String[] args) {
      methodRankPoints(255.7);
   }

   public static void methodRankPoints(double points) {
      if (points >= 202.5) {
         System.out.println("Rank:A1");
      }
      else if (points >= 122.4) {
         System.out.println("Rank:A2");
      }
      else {
         System.out.println("Rank:A3");
      }
   }
}

خروجی کد بالا به شکل زیر خواهد بود:

Rank:A1

ارسال پارامتر با مقدار

پارامترهایی که هنگام فراخوانی به متد داده می شوند باید به همان ترتیبی باشند که در تعریف متد آورده شده اند و همچنین نوع آنها نیز باید به همان شکل باشد. وقتی که یک پارامتر به متد ارسال می شود دوحالت عمده ممکن است پیش بیاید.

  1. هر تغییری که در بدنه متد بر روی پارامتر انجام می دهیم در خارج از متد نیز آن تغییرات اعمال شوند
  2. هر تغییر که در بدنه متد برروی پارامترها انجام می دهیم در خارج از متد آن تغییرات بی تاثیر می باشند.

در حالت اول به این معنی است که ما تغیرات را روی همان متغیر اولیه اعمال کنیم. ولی در حالت دوم مانند این است که مقدار متغیر در پارامتر تابع کپی شود و خود مقدار متغیر اصلی بدون تغییر باقی بماند. به نوع اول ارسال پارامتر با ارجاع یا pass by reference و به نوع دوم ارسال پارامتر با مقدار یا pass by value گفته می شود. در کد زیر یک مثال از pass by value را نشان داده ایم:

public class swappingExample {

   public static void main(String[] args) {
      int a = 30;
      int b = 45;

      System.out.println("Before swapping, a = " +
                          a + " and b = " + b);

      // Invoke the swap method
      swapFunction(a, b);
      System.out.println("\n**Now, Before and After swapping values will be same here**:");
      System.out.println("After swapping, a = " +
                         a + " and b is " + b);
   }

   public static void swapFunction(int a, int b) {
   
      System.out.println("Before swapping(Inside), a = " + a
                           + " b = " + b);
      // Swap n1 with n2
      int c = a;
      a = b;
      b = c;

      System.out.println("After swapping(Inside), a = " + a
                           + " b = " + b);
   }
}

خروجی کد بالا به شرح زیر خواهد بود:

Before swapping, a = 30 and b = 45
Before swapping(Inside), a = 30 b = 45
After swapping(Inside), a = 45 b = 30

**Now, Before and After swapping values will be same here**:
After swapping, a = 30 and b is 45

دقت داشته باشید که اشیا در جاوا به صورت pass by reference ارسال می شوند ولی انواع اولیه به صورت pass by value ارسال خواهند شد.

overload کردن متدها

در زبان جاوا بسیار پیش می آید که یک کلاس دارای چند متد با یک نام یکسان می باشد که این متد ها هرکدام یا از نظر نوع خروجی یا از نظر تعداد پارامتر های ورودی یا از نظر نوع پارامتر های ورودی با یکدیگر تفاوت دارند. ولی نام آنها یکسان است. تعریف دو متد با نام یکسان و نوع خروجی و متغیر های یکسان باعث خطا می شود. به این گونه تعریف متد ها با نام یکسان ولی پارامترها یا نوع بازگشتی متفاوت overload کردن متدها یا method overloading گفته می شود. در زیر یک مثالی از این عمل آورده شده است که به دست آوردن کوچکترین عدد در دو نوع عدد صحیح و اعشاری می باشد.

public class ExampleOverloading{

   public static void main(String[] args) {
      int a = 11;
      int b = 6;
      double c = 7.3;
      double d = 9.4;
      int result1 = minFunction(a, b);
      // same function name with different parameters
      double result2 = minFunction(c, d);
      System.out.println("Minimum Value = " + result1);
      System.out.println("Minimum Value = " + result2);
   }

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

      return min; 
   }
   // for double
   public static double minFunction(double n1, double n2) {
     double min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;

      return min; 
   }
}

خروجی کد بالا به شکل زیر خواهد بود:

Minimum Value= 6
Minimum Value= 7.3

همانگونه که دیده می شود دو عدد متد به نام minFuction وجود دارد.Itpro باشید

نویسنده: مهدی عادلی فر

منبع: جزیره برنامه نویسی و توسعه نرم افزار وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.

#برنامه_نویسی_جاوا #آموزش_برنامه_نویسی_جاوا #سربارگذاری_متدها_در_جاوا #آشنایی_با_متدها_در_جاوا #آموزش_جاوا #تعریف_متدها_در_جاوا #معرفی_متدهای_جاوا #دوره_آموزشی_جاوا #ارسال_پارامترها_به_متدها_در_جاوا
عنوان
1 آموزش جاوا (Java) قسمت 1 : معرفی ، خصوصیات و شروع به کار رایگان
2 آموزش جاوا (Java) قسمت 2 : شی گرایی قسمت یک رایگان
3 آموزش جاوا (Java) قسمت 3: شی گرایی قسمت دو رایگان
4 آموزش جاوا (Java) قسمت 4 : شی گرایی قسمت سه رایگان
5 آموزش جاوا (Java) قسمت 5 : انواع داده رایگان
6 آموزش جاوا (Java) قسمت 6 : انواع متغیر رایگان
7 آموزش جاوا (Java) قسمت 7 : Modifier ها رایگان
8 آموزش جاوا (Java) قسمت 8 : عملگرها قسمت یک رایگان
9 آموزش جاوا (Java) قسمت 9 : عملگرها قسمت دو رایگان
10 آموزش جاوا (Java) قسمت 10 : حلقه های تکرار رایگان
11 آموزش جاوا (Java) قسمت 11 : عبارات شرطی رایگان
12 آموزش جاوا (Java) قسمت 12 : کلاس Wrapper اعداد رایگان
13 آموزش جاوا (Java) قسمت 12 : کلاس Wrapper اعداد رایگان
14 آموزش جاوا (Java) قسمت 14: کلاس Wrapper کاراکترها رایگان
15 آموزش جاوا (Java) قسمت 15 : کلاس String و کار با رشته قسمت یک رایگان
16 آموزش جاوا (Java) قسمت 16 : کلاس String و کار با رشته قسمت دو رایگان
17 آموزش جاوا (Java) قسمت 17 : کلاس String و کار با رشته قسمت سه رایگان
18 آموزش جاوا (Java) قسمت 18 : کلاس String و کار با رشته قسمت چهار رایگان
19 آموزش جاوا (Java) قسمت 19 : StringBuilder و StringBuffer رایگان
20 آموزش جاوا (Java) قسمت 20 : استفاده از آرایه ها رایگان
21 آموزش جاوا (Java) قسمت 21 : آموزش کار با تاریخ رایگان
22 آموزش جاوا (Java) قسمت 22 : عبارات منظم (Regular Expression) رایگان
23 آموزش جاوا (Java) قسمت 23 : تعریف و استفاده از متدها قسمت یک رایگان
24 آموزش جاوا (Java) قسمت 24 : تعریف و استفاده از متدها قسمت دو رایگان
25 آموزش جاوا (Java) قسمت 25 : کار با استریم ها و فایل ها رایگان
26 آموزش جاوا (Java) قسمت 26 : کار با دایرکتوری ها رایگان
27 آموزش جاوا (Java) قسمت 27 : کلاس ByteArrayInputStream رایگان
28 آموزش جاوا (Java) قسمت 28 : معرفی کلاس File و متدها رایگان
29 آموزش جاوا (Java) قسمت 29 : معرفی و شرح Exception ها قسمت 1 رایگان
30 آموزش جاوا (Java) قسمت 30 : معرفی و شرح Exception ها قسمت 2 رایگان
31 آموزش جاوا (Java) قسمت 31 : معرفی و شرح Exception ها قسمت 3 رایگان
32 آموزش جاوا (Java) قسمت 32 : استفاده از انوع کلاس های داخلی رایگان
33 آموزش جاوا (Java) قسمت 33 : وراثت کلاس ها و انواع آن رایگان
34 آموزش جاوا (Java) قسمت 34 : Override کردن متد ها رایگان
35 آموزش جاوا (Java) قسمت 35 : چند ریختی (Polymorphism) رایگان
36 آموزش جاوا (Java) قسمت 36 : Enum و ویژگی های آن رایگان
37 آموزش جاوا (Java) قسمت 37 : معرفی Abstract رایگان
38 آموزش جاوا (Java) قسمت 38 : استفاده از کپسول بندی (Encapsulation) رایگان
39 آموزش جاوا (Java) قسمت 39 : استفاده از اینترفیس ها رایگان
40 آموزش جاوا (Java) قسمت 40 : پکیج(Package) و نحوه استفاده رایگان
41 آموزش جاوا (Java) قسمت 41 : معرفی داده ساختارها Enumeration رایگان
42 آموزش جاوا (Java) قسمت 42 : داده ساختار BitSet رایگان
43 آموزش جاوا (Java) قسمت 43 : داده ساختار Vector رایگان
44 آموزش جاوا (Java) قسمت 44 : داده ساختار Stack (پشته) رایگان
45 آموزش جاوا (Java) قسمت 45 : داده ساختار Dictionary رایگان
46 آموزش جاوا (Java) قسمت 46 : داده ساختار Hashtable رایگان
47 آموزش جاوا (Java) قسمت 47 : داده ساختار Properites رایگان
48 آموزش جاوا (Java) قسمت 48 : معرفی و آموزش جنریک (Generic) رایگان
49 آموزش جاوا (Java) قسمت 49 : برنامه نویسی سوکت و شبکه قسمت 1 رایگان
50 آموزش جاوا (Java) قسمت 50 : برنامه نویسی سوکت و شبکه قسمت 2 رایگان
51 آموزش جاوا (Java) قسمت 51 : استفاده از Lambda Expression رایگان
52 آموزش جاوا (Java) قسمت 52 : Thread و Multi-Threading رایگان
53 آموزش جاوا (Java) قسمت 53 : Runnable در Thread و Multi-Threading رایگان
54 آموزش جاوا (Java) قسمت 54 : کلاس Thread و متدها رایگان
زمان و قیمت کل 0″ 0
0 نظر

هیچ نظری ارسال نشده است! اولین نظر برای این مطلب را شما ارسال کنید...

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره پاییزه می تونی امروز ارزونتر از فردا خرید کنی ....