دوره‌ها / JAVA / متدها (Java Methods)

متدها (Java Methods)

15 دقیقه Article پیش‌نمایش

متدها در جاوا: بلوک‌های سازنده منطق 🛠️📦

متد (Method) مجموعه‌ای از کدهای سازمان‌یافته است که برای انجام یک وظیفه خاص استفاده می‌شود. متدها به ما اجازه می‌دهند کد را یک بار بنویسیم و چندین بار از آن استفاده کنیم (DRY - Don't Repeat Yourself).

۱. چرا از متدها استفاده می‌کنیم؟

  • قابلیت استفاده مجدد: جلوگیری از کپی‌پیست کردن کد.
  • نظم و خوانایی: تقسیم برنامه‌های بزرگ به قطعات کوچک و قابل فهم.
  • نگهداری آسان: اگر منطق برنامه تغییر کند، فقط یک جا را اصلاح می‌کنیم.

۲. ساختار تعریف متد 🏗️

یک متد باید داخل یک کلاس تعریف شود. ساختار کلی آن به این صورت است:

{code_block('public class Main {\n static void myMethod() {\n System.out.println("I just got executed!");\n }\n}')}
static: به این معنی است که متد متعلق به کلاس است و نه به یک شیء خاص (تا زمانی که به مبحث شیءگرایی نرسیده‌ایم، فعلاً تمام متدها را static در نظر بگیرید).
void: به این معنی است که این متد خروجی (Return Value) ندارد.

۳. فراخوانی متد (Calling a Method)

برای اجرای کدهای داخل متد، باید نام آن را به همراه پرانتز صدا بزنیم:

{code_block('public static void main(String[] args) {\n myMethod();\n myMethod(); // می‌توانیم چندین بار صدا بزنیم\n}')}

مثال کامل:

{code_block('public class Main {\n static void sayHello() {\n System.out.println("Hello World!");\n }\n\n public static void main(String[] args) {\n sayHello();\n }\n}')}
نام‌گذاری: در جاوا نام متدها معمولاً با حروف کوچک شروع می‌شود و به صورت camelCase نوشته می‌شود (مثل calculateFinalPrice). نام باید یک فعل باشد که نشان‌دهنده کارِ متد است.
<hr style="margin: 50px 0; border: 0; border-top: 1px dashed rgba(255,255,255,0.1);">

بخش تخصصی: مهندسی متدها و مدیریت حافظه 🛠️💎

در این بخش، به مفاهیمی می‌پردازیم که برای درک عمیق مدیریت حافظه و کارایی در جاوا حیاتی هستند.

۱. پشته متد (Method Stack) و فریم‌ها

هر بار که متدی فراخوانی می‌شود، جاوا یک Stack Frame جدید در حافظه Stack ایجاد می‌کند. این فریم شامل متغیرهای محلی و پارامترهای متد است. وقتی متد تمام می‌شود، فریم آن از پشته حذف (Pop) می‌شود. درک این فرآیند برای دیباگ کردن خطاهایی مثل StackOverflowError بسیار مهم است.

۲. انتقال پارامتر: Pass-by-Value

یک نکته بسیار مهم در جاوا این است که جاوا همیشه مقادیر را به صورت Pass-by-Value منتقل می‌کند. برای انواع اولیه، خودِ مقدار کپی می‌شود. برای اشیاء (Objects)، "کپیِ ریفرنس" به متد فرستاده می‌شود. این یعنی شما می‌توانید ویژگی‌های یک شیء را داخل متد تغییر دهید، اما نمی‌توانید خودِ ریفرنس اصلی را به شیء دیگری متصل کنید.

۳. کدهای ماژولار و اصل Single Responsibility

در مهندسی نرم‌افزار حرفه‌ای، هر متد باید فقط و فقط "یک کار" انجام دهد. اگر متد شما بیش از ۲۰ خط شده یا نام آن شامل کلمه "And" است، احتمالاً باید آن را به متدهای کوچک‌تر تقسیم کنید. این کار باعث می‌شود کد شما قابل تست (Testable) و قابل نگهداری باشد.

نکته پایانی: متدها بلوک‌های سازنده هر اپلیکیشن بزرگ هستند. هنرِ یک برنامه‌نویس جاوا در این است که چطور منطقِ پیچیده را به متدهای ساده، کوچک و قابل استفاده مجدد تقسیم کند.

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

فراخوانی متد چاپ Easy
سوال تمرین

متدی به نام myMessage در کد وجود دارد. آن را داخل متد main فراخوانی کنید تا متن داخل آن چاپ شود.

پاسخ تمرین
JAVA
public class Main {
  static void myMessage() {
    System.out.println("Hello from Method!");
  }

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

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.