متد در جاوا چیست؟ – به زبان ساده + نحوه تعریف

۳۹۱۹
۱۴۰۴/۰۶/۵
۱۲ دقیقه
PDF
آموزش متنی جامع
امکان دانلود نسخه PDF

در این مطلب قصد داریم به این پرسش پاسخ دهیم که متد در جاوا چیست و به یادگیری مفهوم «متد» (Method) در زبان برنامه‌نویسی جاوا همراه با جزئیات تکمیلی آن از جمله انواع متد در جاوا،‌ سینتکس آن و سایر موارد مهم پیرامون متدهای جاوا و ارائه مثال‌های ساده برنامه نویسی می‌پردازیم.

آنچه در این مطلب می‌آموزید:
  • خواهید آموخت متد چیست و چه نقشی در ساختار جاوا دارد.
  • می‌آموزید چگونه متدهای مختلف را تعریف، فراخوانی و پارامترگذاری کنید.
  • با سربارگذاری متدها و ساخت متدهای چندمنظوره آشنا می‌شوید.
  • یاد می‌گیرید سطح دسترسی را تعیین و متدهای «static» و «instance» را در جاوا مدیریت کنید.
  • می‌آموزید هنگام اجرای متدها حافظه «Stack» و «Heap» چگونه مدیریت می‌شود.
متد در جاوا چیست؟ – به زبان ساده + نحوه تعریفمتد در جاوا چیست؟ – به زبان ساده + نحوه تعریف
997696

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

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

متد باید در یک کلاس «اعلان» (Declare) شود. تعریف متد در جاوا به این صورت است که ابتدا نام متد و به دنبال آن علامت پرانتز باز و بسته () می‌آید. جاوا برخی از متدهای از پیش تعریف شده را مانند System.out.println()  ارائه می‌دهد، اما می‌توان متدهای مخصوص خود را هم برای پیاده‌سازی عملکردهای خاص تعریف کرد. در ادامه برای درک بهتر چیستی متد در جاوا و انواع آن از مثالی ساده استفاده شده است.

متد در جاوا

انواع متد در جاوا چیست ؟

برای شروع یادگیری متد در جاوا و معرفی انواع آن بهتر است از مثالی آسان کمک بگیریم:

همان‌طور که در کدهای بالا مشاهده می‌شود، این برنامه تنها عددی تصادفی را تولید کرده است و سپس آن را چاپ می‌کند. اگر نگاه دقیق‌تری به آن بیاندازیم، می‌بینیم که از ۲ متد در «متد اصلی» (main) استفاده شده است. این ۲ متد شامل موارد زیر هستند:

  • System.out.println()
  • Math.random()

این متدها در کلاسDemoClass تعریف نشده‌اند، بلکه در اینجا فقط از متدهایی استفاده شده است که از قبل به عنوان متدهای کتابخانه استاندارد جاوا وجود داشته‌اند. انواع متد در جاوا به ۲ دسته تقسیم می‌شوند:

  • متدهای ارائه شده در کتابخانه استاندارد جاوا
  • متدهای تعریف شده توسط کاربران

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

متد های ارائه شده در کتابخانه استاندارد جاوا

در کتابخانه استاندارد جاوا متدهای در دسترس و قابل استفاده زیادی گردآوری شده‌اند. این کتابخانه‌ها به وسیله کتابخانه class در جاوا ارائه شده‌اند. این کتابخانه در فایل آرشیو جاوا وجود دارد که در طول اجرای «محیط زمان اجرای جاوا» (JRE | Java Runtime Environment) و «ماشین مجازی جاوا» (JVM | Java Virtual Machine) در دسترس است.

برای استفاده از این کتابخانه‌ها در کدهای پروژه جاوا، باید یک فایل jar به نام stdlib.jar به مسیر کلاس جاوا اضافه شود. برخی از متدهای کتابخانه استانداردی که معمولاً استفاده می‌کنیم، متدهای کتابخانه ریاضی مانندMath.random()وMath.sqrt() یا متدهای String مانندequals() برای مقایسه دو رشته یاconcat() برای اتصال دو رشته هستند.

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

در کنار متدهای آماده کتابخانه استاندارد، برنامه‌نویس می‌تواند متد خود را نیز برای انجام کاری خاص ایجاد کند. این متدها به عنوان «متدهای تعریف شده توسط کاربر» (User Defined Methods) نامیده می‌شوند. برای ساخت متدهای خود، نیاز است که اول مفاهیم و قوانین ایجاد متدها را درک کنیم. بنابراین در ادامه سینتکس (قواعد نحوی) متد در جاوا شرح داده شده است تا با یادگیری آن بتوانیم در برنامه‌های خود متد ایجاد و از آن استفاده کنیم.

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

سینتکس متد جاوا

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

در اینجا این سؤال اساسی مطرح می‌شود که هدف استفاده از متد چیست؟ هدف از به کارگیری متد در جاوا، «امکان استفاده مجدد از کد» است. برای مثال وقتی قطعه کدی را یک بار در متدی تعریف می‌کنیم، می‌توان بارها و بارها در بخش‌های مختلف برنامه از آن استفاده کرد. حال سینتکس متد را تعریف می‌کنیم، ولی پیش از آن، متد نمونه زیر را مشاهده کنید:

سینتکس متد در جاوا به صورت زیر ارائه می‌شود:

modifier non-access_modifier returnType methodName (parameters) throws Exception exceptionName{ // method body }

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

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

  1.  «تنظیم کننده‌ها» (Modifier): این‌ها می‌توانند از نوع «تنظیم کننده سطح دسترسی» (Access Modifiers) باشند. به عنوان مثال،public (عمومی)،private(خصوصی) و از جمله کلمه‌های کلیدی در جاوا برای تعیین سطح دسترسی به حساب می‌آیند. همچنین یک Modifier می‌تواند از نوع «تنظیم کننده بدون دسترسی» (Non Access Modifiers) مانند Static باشد.
  2.  «نوع داده بازگشتی» (Return Type): وقتی متد مقداری را بازمی‌گرداند، نوع داده آن باید مشخص باشد. همچنین اگر متد هیچ مقداری را بازنگرداند، در تعریف آن از کلمه کلیدی Void استفاده می‌شود، نوع Void به این معنی است که متد هیچ مقداری را بازنمی‌گرداند.
  3.  «نام متد» (Method Name): پس از تعیین نوع بازگشت، نام متد مشخص می‌شود که از قراردادهای نام‌گذاری تبعیت می‌کند و به نوعی مانند نام‌های فیلد در جاوا است.
  4.  «پارامترها» (Parameters): این بخش از سینتکس متد در جاوا لیستی از نام پارامترهای ورودی با تعیین نوع داده آن‌ها است که به وسیله کاما از هم جدا می‌شوند. این لیست داخل علامت‌های پرانتز باز و بسته () محصور می‌شود. اگر هیچ پارامتری مشخص نشده باشد، این لیست یک پرانتز خالی خواهد بود.
  5.  «لیست استثنا» (Exception List): یک لیست از استثنائات است که به وسیله کاما از هم جدا می‌شوند و متد می‌تواند این استثناها را ایجاد کند.
  6.  «بدنه متد» (Method Body): این محلی است که کدهای متد در داخل آن قرار می‌گیرند. بدنه با علامت آکولادهای باز و بسته {} محصور می‌شود.

اکنون پس از شرح اجزای سینتکس متد در جاوا، در ادامه این اجزا در تصویر زیر برای مثال قبلی مشخص شده‌اند، تا بتوان درک بهتری نسبت به آن‌ها بدست آورد.

سینتکس متد جاوا

در ادامه این مطلب به شرح نحوه فراخوانی متد در جاوا پرداخته شده است، اما پیش از آن به معرفی مجموعه دوره‌های آموزش جاوا می‌پردازیم.

معرفی فیلم های آموزش زبان برنامه نویسی جاوا

فیلم آموزش جاوا فرادرس

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

دوره‌های مختلف براساس موضوع در مجموعه‌های آموزشی گوناگونی دسته‌بندی شده‌اند که یکی از این مجموعه‌های آموزشی مختص زبان جاوا است. دوره‌های این مجموعه شامل آموزش جامع برنامه نویسی جاوا از سطوح مقدماتی تا پیشرفته،‌ مباحث شی‌گرایی، پایگاه داده‌ها در جاوا، نحوه پیاده‌سازی انواع پروژه‌ها در حوزه‌های مختلف و آموزش‌های پروژه محور و تمرینی با جاوا هستند.

  • برای دسترسی به صفحه مجموعه دوره‌های ویدیویی آموزش جاوا فرادرس + کلیک کنید.

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

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

فراخوانی متد کلاس در جاوا

در این بخش، متد از نوع دسترسی static تعریف شده است. از این رو، این متد را می‌توان بدون ایجاد «وهله‌ای» (Instance) از کلاس فراخوانی کرد، بنابراین به طور مستقیم، یعنی به صورت DemoClass.sampleMethod(4,2) فراخوانی می‌شود. منظور از وهله در شی‌گرایی همان شی ساخته شده از کلاس است. در مثال زیر نحوه فراخوانی متد یک کلاس در جاوا نشان داده شده است.

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

Hello, this is sample method
c:2

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

در این بخش، سطح دسترسی متد به صورت static تعریف نشده است. بنابراین، برای فراخوانی متد ابتدا یک وهله از کلاس (یا همان شی) ایجاد شده است و متد به وسیله آن شی ساخته شده یعنی به صورت یعنیnew DemoClass().sampleMethod(4,2) فراخوانی می‌شود.

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

Hello, this is sample method
c:2

فراخوانی چندین متد در جاوا

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

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

Hello, this is sample method
c:2
Hello, this is sample method
c:2
Hello, this is sample method
c:3

پارامتر و آرگومان متد در جاوا چیست ؟

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

پارامتر متد در جاوا

همان‌طور که در متد استفاده شده در مثال بالا مشاهده می‌شود، هنگام فراخوانی متد، اطلاعاتی را به آن ارسال می‌کنیم. این اطلاعات پارامتر نامیده می‌شوند. طبق مثالی که داریم، درsampleMethod (int a, int b) ملاحظه می‌شود کهa وb پارامترهای ارجاع شده به این متد هستند. این پارامترها به عنوان متغیرهای داخل متد عمل می‌کنند.

در سینتکس متد، دیدیم کهa وb پارامترهای مشخص شده در داخل پرانتز () هستند. نوع داده این پارامترها باید به همراه نام پارامتر مشخص شوند. به عنوان مثال، نوع داده پارامترaاز نوع عدد صحیحint  مشخص شده است. این نوع داده می‌تواند برای هر نوع داده معتبر جاوا، مانند رشته‌ها یا هر شئ دیگری استفاده شود. می‌توان هر تعداد پارامتر را برحسب نیاز در متدهای جاوا مشخص کرد، این پارامترها با کاما از یکدیگر جدا می‌شوند. برای مثال پارامترها را می‌توان به صورت (int a, int b, double c, String d)  تعریف کرد.

پارامتر های متد جاوا

آرگومان متد در جاوا

وقتی متدی را فراخوانی می‌کنیم، مقادیر واقعی مثل اعداد برای پارامترها ارسال می‌شوند که به این مقادیر واقعی «آرگومان» (Argument) گفته می‌شود. برای مثال زمانی که در حال فراخوانیsampleMethod() هستیم، مقادیر واقعی ۲ و ۴ را بهDemoClass.sampleMethod(4,2) ارجاع می‌دهیم. در اینجا، فهرستی از مقادیر واقعی که ارسال می‌کنیم، یعنی آرگومان‌ها باید دقیقاً با فهرست پارامترها مطابقت داشته باشند، یعنی تعدادی از پارامترها و نوع داده آن‌ها. برای مثال:

آرگومان متد جاوا

بنابراین، مقدار ۴ به پارامتر a و مقدار ۲ به پارامتر b اختصاص می‌یابد. براساس اقدامات داخلی مربوط به ()sampleMethod، تغییراتی روی a و b صورت می‌گیرد.

پیش از این برای مفهوم آرگومان در برنامه نویسی مطلب جامعی منتشر شده است که مطالعه آن برای درک بهتر این اصطلاح پیشنهاد می‌شود.

مقادیر بازگشتی در متدهای جاوا

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

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

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

  1. نوع داده مقدار بازگشتی باید در هر متد تعیین شود.
  2. «گزاره بازگشتی» (Return Statement) باید در انتهای متد نوشته شوند.

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

Hello, this is sample method
c:2
x:2

همان‌طور که در اینجا مشاهده شد، باید یک گزاره یا عبارت بازگشتی وجود داشته باشد. البته ممکن است در برخی موارد نیاز به استفاده از چند عبارت بازگشتی در متد به وجود بیاید. این اتفاق معمولاً زمانی رخ می‌دهد که در برنامه از حلقه if-else استفاده شده باشد. برای مثال در قطعه کد زیر از حلقه if-else if و چندین گزاره بازگشتی استفاده شده است.

متد بدون مقدار بازگشتی در جاوا

زمانی که متد هیچ مقداری را به متد فراخوانی کننده خود بازنگرداند، آنگاه نوع داده بازگشتی متد باید به عنوان void تعیین شود.

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

Here is the program Output:
Hello, this is sample method
c:2

تعیین کننده سطح دسترسی در متدهای جاوا

پیش‌تر متدی را مشاهده کردیم که با سطح دسترسی «static» (ایستا) تعریف شده بود. در چنین حالتی متد با استفاده از خود کلاس مثلاً به صورتDemoClass.sampleMethod()  فراخوانی می‌شود یا درواقع به اصطلاح متد را روی کلاس فراخوانی می‌کنیم. همچنین زمانی که سطح دسترسی یک متد به صورت static تعیین نمی‌شود، به آن یک «متد وهله» (Instance Method) می‌گویند. یعنی متد باید از وهله‌ای از کلاس فراخوانی شود. برای مثال باید کد آن را به صورتnew DemoClass().sampleMethod() بنویسیم. همچنین متد می‌تواند به عنوانprivate ،public ،protected وdefault مشابه فیلد جاوا تعیین شود.

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

در جاوا، مدیریت حافظه از طریق «حافظه آزاد» (Heap) و «پشته‌ها» (Stacks) انجام می‌شود. Heap مکانی است که اشیای جاوا در آن ذخیره می‌شوند، ولی در مورد متدها، مدیریت فراخوانی آن‌ها توسط پشته صورت می‌گیرد. هنگام فراخوانی متد،‌ «قاب پشته» (Stack Frame) ساخته شده و آرگومان‌ها ارجاع داده می‌شوند، پس از آن مقدار بازگشتی متد ذخیره سازی می‌شود. با اتمام اجرای متد،‌ قاب پشته اختصاص داده شده، حذف می‌شود.

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

سربارگذاری متد در جاوا چیست ؟

در مثال برنامه جاوا،‌ مشاهده کردیم که متد در جاوا چطور می‌تواند به صورتsampleMethod(int a, int b)تعریف و استفاده شود. حال می‌خواهیم به پاسخ این پرسش بپردازیم که آیا می‌توان بیش از یک متد با نام یکسان داشت؟ یعنی آیا می‌توان چندین متد را با نامsampleMethod()  در یک کلاسDemoClass تعریف کرد؟

پاسخ این پرسش مثبت است. این سناریو را در نظر بگیرید، وقتی بخواهیم متدی برای جمع کردن ۲ عدد تعریف کنیم، ولی این ۲ عدد می‌توانند ۲ «عدد صحیح» (integer) یا از نوع داده double باشند. در چنین سناریویی، نیاز به ۲ متد متفاوت با نام مشابهaddNumbers() خواهیم داشت. این عملکرد در جاوا، «سربارگذاری متد» (Method Overloading) نامیده می‌شود. یعنی تعریف چندین متد در کلاس با یک نام، به شرطی که این متدها تعداد پارامترهای متفاوت یا انواع داده مختلفی از پارامترها را دریافت کنند. در ادامه مثالی برای درک بهتر این مفهوم ارائه شده است.

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

Hello, this is add method
c:6
Hello, this is add method
c:6.5

سوالات متداول

در این بخش به برخی از پرسش‌های رایج پیرامون متد در جاوا پاسخ داده شده است.

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

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

در ادامه مثالی برای استفاده از سینتکس متد در جاوا آمده است.

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

دو نوع متد در جاوا وجود دارد که شامل متدهای ارائه شده در کتابخانه استاندارد جاوا و متدهای تعریف شده توسط کاربر می‌شود.

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

متدmain() در جاوا به عنوان نقطه شروع کدهای برنامه به حساب می‌آید. این متد از پیش تعریف شده و در JVM پیکربندی شده است. برای اجرای یک برنامه جاوا، JVM به دنبال متدmain() می‌گردد و دستورات را در متدmain() اجرا می‌کند. سینتکس متدmain() به صورت زیر است:

پارامتر args آرایه‌ای از کلاس String است. آرگومان‌های خط فرمان از طریق پارامتر args ارسال می‌شوند.

آیا متد و تابع در جاوا یکسان هستند ؟

مفهوم «متد» (Method) و «تابع» (Function) یکسان است. مفهومی در برنامه نویسی شی گرا داریم که طبق آن، قطعه کدی وجود دارد که می‌تواند در هر نقطه برنامه فراخوانی شود و استفاده مجدد از آن امکان‌پذیر است. در جاوا، این مفهوم با نام متد شناخته می‌شود.

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

متدها در کلاس‌های جاوا برای پیاده‌سازی برخی کارکردهای خاص ساخته می‌شوند. معمولاً متدهای نوشته شده، ممکن است لازم باشد چندین بار در برنامه کاربردی جاوا استفاده شوند. متدها باعث ذخیره وقت و انرژی ما می‌شوند. تا هر بار که برای انجام یک کار یکسان کدی مورد نیاز است، از همان بلوک کد قبلی استفاده کنیم. به مثال زیر توجه کنید.

بنابراین، هدف اصلی به کارگیری یک متد، امکان استفاده مجدد از آن برای صرفه‌جویی در زمان، انرژی و بهبود خوانایی و ارتقای قابلیت نگهداری برنامه‌های جاوا است.

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

متدprint() جاوا برای چاپ متن در کنسول و نگه داشتن نشانه‌گر در انتهای متن استفاده می‌شود. یعنی زمانی که متدprint() بعدی فراخوانی می‌شود، چاپ متن از انتهای این محل شروع می‌شود. هر نوع داده یا شیء اولیه جاوا را می‌توان به عنوان آرگومان ارسال کرد و در کنسول به صورت متن نمایش داد.

برای مثال،void print(String s) یعنی متد یک رشته را چاپ می‌کند. یاvoid print(int s) یعنی متد یک مقدار عدد صحیح را چاپ می‌کند.

جاوا علاوه بر متدprint() دارای متدprintln‎‎‎() هم است. متدی که به جز برای موقعیت نشانه‌گر، مانند متدprint() عمل می‌کند. یعنی هر بار که متدprintln‎‎‎() فراخوانی می‌شود، متن را چاپ می‌کند و نشانه‌گر را به ابتدای خط بعدی منتقل می‌کند.

جمع بندی

در این آموزش، مفهوم متدهای جاوا به طور مفصل بررسی شد و سینتکس متد را به همراه مفهوم پارامترها - آرگومان‌ها، نوع بازگشتی، دسترسی به توصیف‌گرها، نوع متدها و متد سربار گذاری مشاهده کردیم.

بر اساس رای ۱ نفر
آیا این مطلب برای شما مفید بود؟
اگر پرسشی درباره این مطلب دارید، آن را با ما مطرح کنید.
منابع:
softwaretestinghelpw3schools
PDF
مطالب مرتبط
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *