CodeGym /وبلاگ جاوا /Random-FA /روش های جاوا
John Squirrels
مرحله
San Francisco

روش های جاوا

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

متدها در جاوا چیست؟

متدها رفتار اشیاء را تعریف می کنند و دنباله ای از دستورات هستند که به شما امکان می دهند برخی از عملیات را در برنامه انجام دهید. در سایر زبان های برنامه نویسی، روش ها اغلب به عنوان "توابع" نامیده می شوند و به درستی نیز چنین است. در واقع روش یک تابع در مفهوم ریاضی است. معمولاً چیزی به ورودی متد (برخی متغیرها) ارائه می شود، این متغیرها توسط یک سری دستورات پردازش می شوند و سپس متد نتیجه ای را ایجاد می کند. این احتمال وجود دارد که شما قبلاً با روش‌هایی برخورد کرده باشید، حداقل با استفاده از void main (String[] args) عمومی . این روش معمولاً اجرای یک برنامه جاوا را شروع می کند.

چگونه متدها را در جاوا اعلام کنیم؟

تمام متدهای جاوا در داخل کلاس ها ایجاد می شوند. به شرح زیر اعلام می شوند:
accessSpecifier ReturnType name (parameter list) {
//method body
}
مثلا:
public int addTwoNumbers (int a, int b){

//method body
return}
در جایی که public یک مشخص کننده دسترسی است، int نوعی متغیر است که متد برمی گرداند، addTwoNumbers نام متد، a و b پارامترهای متد هستند. بیایید کمی با جزئیات بیشتر نگاه کنیم. برای تعریف نوع دسترسی متد از Access Specifier استفاده می شود. آنها می توانند به شرح زیر باشند:
  • public : دسترسی به متد از هر کلاسی در دسترس است.

  • private : دسترسی در کلاسی که در آن تعریف شده است در دسترس است.

  • محافظت شده : دسترسی فقط در داخل بسته یا زیر کلاس های دیگر در بسته دیگر در دسترس است.

  • پیش فرض : دسترسی از بسته ای که در آن اعلام شده است در دسترس است. در این حالت کلمه پیش فرض نوشته نمی شود.

Return Type نوع برگرداندن این روش را مشخص می کند. در مثال بالا، int نوع بازگشتی است. اگر متدی چیزی برگرداند، نوع بازگشتی باطل است:
public void printSomething (String myString) {}
نام روش نام منحصر به فرد روش شما است. در ادامه این مقاله قصد داریم برخی از قوانین نامگذاری جاوا را توضیح دهیم. در روش های بالا، نام ها addTwoNumbers و printSomething هستند . لیست پارامترها لیستی از آرگومان ها (نوع داده و نام متغیر) است که متد می گیرد. در مثال اول بالا، "int a, int b" پارامترها هستند، در مثال دوم، String myString یک آرگومان است. همچنین اگر نمی خواهید از هیچ پارامتری در متد استفاده کنید، می توانید این قسمت را خالی بگذارید.

مثال پارامترهای روش

public void printSomething (String myParameter1, int myParameter2) {}
در اینجا دو متغیر myParameter1 و myParameter2 وجود دارد . آنها پارامترهای روش هستند. مجموعه ای از دستورالعمل های محصور شده در بریس های فرفری است که این روش اجرا می کند. اگر نوع برگشتی متد باطل نباشد، کلمه کلیدی بازگشت باید در بدنه متد وجود داشته باشد. بازگشت با آرگومانی که این متد برمی گرداند دنبال می شود. بنابراین، برای ایجاد یک متد، باید نام آن را به همراه براکت ها مشخص کنید و در براکت ها، در صورت لزوم، متغیرهایی را که متد روی آنها عمل می کند، مشخص کنید. قبل از نام متد یک مشخص کننده دسترسی و یک نوع متغیری است که متد برمی گرداند، یا اگر متد چیزی برگرداند، void است. در پرانتزهای فرفری، روش واقعی را می نویسیم، دنباله ای از دستورالعمل ها که اغلب با آرگومان های متد کار می کند. در اینجا نمونه ای از روشی است که بیشترین عدد را در یک آرایه پیدا کرده و آن را برمی گرداند.
public int findBiggest(int[] numbers) {
   int max;
   max = numbers[0];
   for (int i = 1; i < numbers.length; i++) {
       if (max < numbers[i]) {
           max = numbers[i];
       }
   }
   return max;
}

چگونه یک روش را نامگذاری کنیم؟

قوانین سختگیرانه ای برای نام گذاری روش ها وجود ندارد، اما اگر قصد دارید به طور حرفه ای در جاوا توسعه دهید، دستورالعمل هایی وجود دارد که باید از آنها پیروی کنید. اسامی روش ها اغلب افعالی هستند که با حروف مختلط نوشته می شوند و با حروف کوچک شروع می شوند اما برای هر کلمه بعدی از یک حرف بزرگ استفاده می کنند (camelCase). در اینجا چند نمونه آورده شده است:
int addTwoNumbers (int a, int b)
void run()

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

برای فراخوانی یک متد کافی است نام آن را بنویسید و متغیرهای مربوطه را در صورتی که در اعلان بودند تنظیم کنید. بیایید متد findBiggest را در متد اصلی فراخوانی کنیم :
public static void main(String[] args) {
  int[] array = new int[] {5, 7, -2, 6, 7, 1};
  int max = findBiggest(array);
   System.out.println("the biggest number in array is: " + max);
  }
خروجی این برنامه:
بزرگترین عدد در آرایه است: 7

انواع مختلف متدها در جاوا

در جاوا همه چیز از اشیا تشکیل شده است و رفتار اشیا با روش هایی تعریف می شود. به طور متعارف، می توان گفت که جاوا دارای روش های از پیش تعریف شده و تعریف شده توسط کاربر است. متدهای از پیش تعریف شده متدهایی هستند که در کلاس هایی که بخشی از خود زبان جاوا هستند گنجانده می شوند.

روش های از پیش تعریف شده

روش های کتابخانه از پیش تعریف شده یا استاندارد در جاوا ساخته شده اند. البته هر برنامه نویسی می تواند از آنها استفاده کند یا حتی آنها را به صورت محلی برای برنامه های خود تغییر دهد. کتابخانه کلاس جاوا در یک فایل آرشیو جاوا (به عنوان مثال *jar) با ماشین مجازی جاوا (JVM) و یک محیط زمان اجرا جاوا قرار دارد. اینها می توانند برای مثال متدهای کلاس Math مانند min() , max() یا abs() باشند . یا متدهای دستکاری رشته مانند ()concat . بیایید یک کلاس با یک متد main ایجاد کنیم و چند متد استاندارد کتابخانه را فراخوانی کنیم.
import static java.lang.Math.max;

public class Test {

    public static void main(String[] args) {
       int a = 5;
       int b = 7;
       int max = max(a,b);
       System.out.println(max);
       String str1 = "I am ";
       String str2 = "here ";
       String str3 = str1.concat(str2);
       System.out.println(str3);


   }

}
توجه داشته باشید که برای استفاده از متدهای کلاس Math باید در ابتدای برنامه وارد شود. اگر این کار انجام نشد، می توانید نام کلاس را قبل از نام متد که با یک نقطه جدا شده است بنویسید:
int max = Math.max(a,b);

روش های تعریف شده توسط کاربر

این روش ها توسط برنامه نویسان برای نیازهای پروژه هایشان ایجاد می شود. در واقع، ما قبلاً متد findBiggest() تعریف شده توسط کاربر را در بالا ایجاد کرده‌ایم. برای ادغام، بیایید متد دیگری ایجاد کنیم که چیزی برنمی‌گرداند و پارامتری ندارد اما به نام وارد شده پاسخ می‌دهد و سلام می‌دهد (یعنی خروجی به کنسول).
import java.util.Scanner;

public class Test {

   public void repeater() {
       Scanner scanner = new Scanner(System.in);
       System.out.println("WHat should I repeat after you?...");
       String s =  scanner.nextLine();
       System.out.println(s);
   }
}

ایجاد متدهای استاتیک در جاوا

به طور کلی، متدها در جاوا متدهای اشیا هستند. برای فراخوانی یک متد، باید یک نمونه از کلاسی که این متد در آن تعریف شده است ایجاد کنید. با این حال، روش های ایستا نیز وجود دارد. تفاوت آنها با معمولی ها در این است که به یک کلاس متصل هستند نه یک شی. ویژگی مهم یک روش استاتیک این است که فقط می تواند به متغیرها/روش های استاتیک دسترسی داشته باشد. آنها با استفاده از کلمه کلیدی ثابت تعریف می شوند . بنابراین، در کلاس Math ، تمام روش‌های کار با متغیرها ثابت هستند. ما می توانیم چیزی شبیه به کلاس Math ایجاد کنیم و چندین متد ثابت را در آن جمع آوری کنیم که بدون ایجاد نمونه ای از کلاس حاوی استفاده شود. بیایید آن را اعداد بنامیم .
import java.util.ArrayList;
import java.util.List;
import java.util.stream.IntStream;


public class Numbers {


   public static int findMax(int left, int right) {
       return (left < right) ? right : left;

   }


   public static boolean isNegative(int number) {
       return number < 0;
   }

   public static long power(long number, int deg) {

       if (deg == 0) {
           number = 1;
           return number;
       } else {
           number = power(number, deg - 1) * number;
           return number;
       }
   }

   public static long abs(long number) {
       return number > 0 ? number : -number;
     }


    public static void main(String[] args) {

       int a = 5;
       int b = 7;
       long c = -7;
       long abs = abs(c);
       System.out.println(abs);
       System.out.println(findMax(a,b));

   }

}
خروجی برنامه اینجاست:
7 7
ابتدا روشی فراخوانی می شود که قدر مطلق عدد را جستجو می کند و سپس روشی که به دنبال بزرگتر از دو عدد می گردد. برای فراخوانی این متدها نیازی به ایجاد نمونه ای از کلاس Numbers ندارید زیرا هر دو متد به صورت ثابت تعریف شده اند.

استفاده از روش های نمونه در کد جاوا

متدهای نمونه یا متدهای معمولی را می توان در نمونه کلاسی که متد در آن تعریف شده است فراخوانی کرد.
public class Cat implements Voice{
   String name;
   String breed;
   int year;


   public void talk() {
       System.out.println("meow meow");
   }
}
برای فراخوانی متد talk() باید یک نمونه از کلاس Cat ایجاد کنید :
public class Demo {
   public static void main(String[] args) {
       Cat cat = new Cat ();
       cat.talk();

   }
}
این خروجی برنامه اینجاست:
میو میو

روش های چکیده در جاوا

متدهای انتزاعی در جاوا متدهایی هستند که پیاده سازی ندارند. به این معنی که وقتی اعلام می شود کدی ندارند. آنها را فقط می توان در کلاس های انتزاعی اعلام کرد و در فرزندان غیرانتزاعی آنها پیاده سازی کرد. بیایید یک کلاس انتزاعی با یک متد انتزاعی ()myMethodAdd ایجاد کنیم .
abstract class DemoAbs {
   abstract void myMethodAdd();
}
اکنون بیایید یک کلاس Child از این کلاس انتزاعی، DemoAbs ایجاد کنیم . در اینجا ما لزوماً باید متد myMethodAdd() را پیاده سازی کنیم .
public class myClass extends DemoAbs {

   void myMethodAdd() {
       System.out.println("hello");
   }

   public static void main(String[] args) {
       DemoAbs demoAbs = new myClass();
       demoAbs.myMethodAdd();
   }
}

تخصیص حافظه برای فراخوانی روش

این موضوع نسبتاً پیچیده ای است که نیاز به تحلیل دقیق تری دارد. در اینجا برای آشنایی سطحی با موضوع فقط ابتدایی ترین ها را ذکر می کنیم. حافظه JVM از قسمت های پشته و پشته تشکیل شده است. Heap ناحیه ای از حافظه است که اشیاء جاوا را ذخیره می کند. حافظه پشته یک ناحیه موقت از حافظه است که متغیرهای اولیه و ارجاع به اشیاء متد را ذخیره می کند. حافظه پشته حاوی مقادیر کوتاه مدتی است که به روش بستگی دارد. این نوع حافظه بر اساس اصل Last In First Out (LIFO) است. هنگامی که یک متد را فراخوانی می کنیم، حافظه پشته یک بلوک جدید ایجاد می کند. حاوی مقادیر ابتدایی محلی است. وقتی یک متد را خاتمه می دهیم، بلوک ایجاد شده در حافظه پشته آزاد می شود.

نتیجه

در این مقاله با اصول ایجاد متدها در زبان جاوا و همچنین اینکه چه متدهایی در جاوا هستند و نحوه کار با آنها آشنا شدیم. ما یاد گرفتیم که روش ها رفتار کلاس ها را تعیین می کنند. بدون روش ها، تعامل اشیا با یکدیگر غیرممکن خواهد بود. برای تقویت آموخته هایتان، پیشنهاد می کنیم یک درس ویدیویی از دوره جاوا ما تماشا کنید
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION