متدها (Java Methods)
متدها در جاوا: بلوکهای سازنده منطق 🛠️📦
متد (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}')}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}')}calculateFinalPrice). نام باید یک فعل باشد که نشاندهنده کارِ متد است.
بخش تخصصی: مهندسی متدها و مدیریت حافظه 🛠️💎
در این بخش، به مفاهیمی میپردازیم که برای درک عمیق مدیریت حافظه و کارایی در جاوا حیاتی هستند.
۱. پشته متد (Method Stack) و فریمها
هر بار که متدی فراخوانی میشود، جاوا یک Stack Frame جدید در حافظه Stack ایجاد میکند. این فریم شامل متغیرهای محلی و پارامترهای متد است. وقتی متد تمام میشود، فریم آن از پشته حذف (Pop) میشود. درک این فرآیند برای دیباگ کردن خطاهایی مثل StackOverflowError بسیار مهم است.
۲. انتقال پارامتر: Pass-by-Value
یک نکته بسیار مهم در جاوا این است که جاوا همیشه مقادیر را به صورت Pass-by-Value منتقل میکند. برای انواع اولیه، خودِ مقدار کپی میشود. برای اشیاء (Objects)، "کپیِ ریفرنس" به متد فرستاده میشود. این یعنی شما میتوانید ویژگیهای یک شیء را داخل متد تغییر دهید، اما نمیتوانید خودِ ریفرنس اصلی را به شیء دیگری متصل کنید.
۳. کدهای ماژولار و اصل Single Responsibility
در مهندسی نرمافزار حرفهای، هر متد باید فقط و فقط "یک کار" انجام دهد. اگر متد شما بیش از ۲۰ خط شده یا نام آن شامل کلمه "And" است، احتمالاً باید آن را به متدهای کوچکتر تقسیم کنید. این کار باعث میشود کد شما قابل تست (Testable) و قابل نگهداری باشد.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
متدی به نام myMessage در کد وجود دارد. آن را داخل متد main فراخوانی کنید تا متن داخل آن چاپ شود.
public class Main {
static void myMessage() {
System.out.println("Hello from Method!");
}
public static void main(String[] args) {
myMessage();
}
}
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.