متد در جاوا چیست؟ — به زبان ساده + نحوه تعریف
در این مطلب قصد داریم به این پرسش پاسخ دهیم که متد در جاوا چیست و به یادگیری مفهوم «متد» (Method) در زبان برنامهنویسی جاوا همراه با جزئیات تکمیلی آن از جمله انواع متد در جاوا، سینتکس آن و سایر موارد مهم پیرامون متدهای جاوا و ارائه مثالهای ساده برنامه نویسی میپردازیم.
متد در جاوا چیست ؟
به طور کلی، متد در برنامه نویسی قطعه کدی است که فقط در صورت فراخوانی، اجرا میشود. برای انتقال دادهها به یک متد، باید آنها را به عنوان پارامتر به متد ارجاع داد. متدها برای انجام یک سری اقدامات خاص استفاده میشوند و به عنوان تابع هم در نظر گرفته میشوند. در واقع متد در جاوا و سایر زبانهای برنامه نویسی همان تابع است، با این تفاوت که متدها در کلاسها تعریف و در بحث شیگرایی مطرح میشوند.
متد باید در یک کلاس «اعلان» (Declare) شود. تعریف متد در جاوا به این صورت است که ابتدا نام متد و به دنبال آن علامت پرانتز باز و بسته () میآید. جاوا برخی از متدهای از پیش تعریف شده را مانند System.out.println() ارائه میدهد، اما میتوان متدهای مخصوص خود را هم برای پیادهسازی عملکردهای خاص تعریف کرد. در ادامه برای درک بهتر چیستی متد در جاوا و انواع آن از مثالی ساده استفاده شده است.
انواع متد در جاوا چیست ؟
برای شروع یادگیری متد در جاوا و معرفی انواع آن بهتر است از مثالی آسان کمک بگیریم:
1package com.softwaretestinghelp;
2
3public class DemoClass{
4
5 public static void main (String[] args){
6 System.out.println("Hello , this is sample program");
7 double d = Math.random();
8 System.out.println("Random Number:"+d);
9 }
10
11}
همانطور که در کدهای بالا مشاهده میشود، این برنامه تنها عددی تصادفی را تولید کرده است و سپس آن را چاپ میکند. اگر نگاه دقیقتری به آن بیاندازیم، میبینیم که از ۲ متد در «متد اصلی» (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) نامیده میشوند. برای ساخت متدهای خود، نیاز است که اول مفاهیم و قوانین ایجاد متدها را درک کنیم. بنابراین در ادامه سینتکس (قواعد نحوی) متد در جاوا شرح داده شده است تا با یادگیری آن بتوانیم در برنامههای خود متد ایجاد و از آن استفاده کنیم.
سینتکس متد جاوا
با در نظر گرفتن تعریف اصطلاح متد، مشخص میشود که متدها در جاوا و سایر زبانهای برنامه نویسی به عنوان ساز و کارهایی مرتبط با یک کلاس به حساب میآیند. به بیان سادهتر، متد قطعه کدی دارای مجموعهای از دستورها برای اجرای عملکردهای خاص است. این بلوک کد، هنگام فراخوانی متد اجرا شده و دادهها نیز به عنوان پارامترهایی شناخته میشوند که میتوان آنها را به متد ارجاع داد.
در اینجا این سؤال اساسی مطرح میشود که هدف استفاده از متد چیست؟ هدف از به کارگیری متد در جاوا، «امکان استفاده مجدد از کد» است. برای مثال وقتی قطعه کدی را یک بار در متدی تعریف میکنیم، میتوان بارها و بارها در بخشهای مختلف برنامه از آن استفاده کرد. حال سینتکس متد را تعریف میکنیم، ولی پیش از آن، متد نمونه زیر را مشاهده کنید:
1public static void sampleMethod(int a,int b) throws ArithmeticException{
2 System.out.println("Hello, this is sample method");//<- Method body
3 int c = a/b;
4 System.out.println("c:"+c);
5}
سینتکس متد در جاوا به صورت زیر ارائه میشود:
modifier non-access_modifier returnType methodName (parameters) throws Exception exceptionName{ // method body }
اجزای سینتکس متد در جاوا
در ادامه هر یک از اجزای سینتکس متد در جاوا به ترتیب فهرست شده است.
- «تنظیم کنندهها» (Modifier): اینها میتوانند از نوع «تنظیم کننده سطح دسترسی» (Access Modifiers) باشند. به عنوان مثال،public (عمومی)،private(خصوصی) و از جمله کلمههای کلیدی در جاوا برای تعیین سطح دسترسی به حساب میآیند. همچنین یک Modifier میتواند از نوع «تنظیم کننده بدون دسترسی» (Non Access Modifiers) مانند Static باشد.
- «نوع داده بازگشتی» (Return Type): وقتی متد مقداری را بازمیگرداند، نوع داده آن باید مشخص باشد. همچنین اگر متد هیچ مقداری را بازنگرداند، در تعریف آن از کلمه کلیدی Void استفاده میشود، نوع Void به این معنی است که متد هیچ مقداری را بازنمیگرداند.
- «نام متد» (Method Name): پس از تعیین نوع بازگشت، نام متد مشخص میشود که از قراردادهای نامگذاری تبعیت میکند و به نوعی مانند نامهای فیلد در جاوا است.
- «پارامترها» (Parameters): این بخش از سینتکس متد در جاوا لیستی از نام پارامترهای ورودی با تعیین نوع داده آنها است که به وسیله کاما از هم جدا میشوند. این لیست داخل علامتهای پرانتز باز و بسته () محصور میشود. اگر هیچ پارامتری مشخص نشده باشد، این لیست یک پرانتز خالی خواهد بود.
- «لیست استثنا» (Exception List): یک لیست از استثنائات است که به وسیله کاما از هم جدا میشوند و متد میتواند این استثناها را ایجاد کند.
- «بدنه متد» (Method Body): این محلی است که کدهای متد در داخل آن قرار میگیرند. بدنه با علامت آکولادهای باز و بسته {} محصور میشود.
اکنون پس از شرح اجزای سینتکس متد در جاوا، در ادامه این اجزا در تصویر زیر برای مثال قبلی مشخص شدهاند، تا بتوان درک بهتری نسبت به آنها بدست آورد.
در ادامه این مطلب به شرح نحوه فراخوانی متد در جاوا پرداخته شده است، اما پیش از آن به معرفی مجموعه دورههای آموزش جاوا میپردازیم.
معرفی فیلم های آموزش زبان برنامه نویسی جاوا
زبان برنامه نویسی جاوا، زبانی قدرتمند با کاربردهای فراوان است که در زمینههای مختلف استفاده میشود. برای یادگیری هر چه بیشتر و بهتر جاوا و استفاده درست بر اساس نیازمندیهای پروژهای که در آن فعالیت میکنیم، نیاز به استفاده از منابع آموزشی جامع و کاربردی وجود دارد. فرادرس یکی از سایتهای فارسی زبانی به حساب میآید که در آن دورههای آموزشی بسیاری در حوزههای مختلف به ویژه در زمینههای مربوط به کامپیوتر و برنامه نویسی ارائه شده است.
دورههای مختلف براساس موضوع در مجموعههای آموزشی گوناگونی دستهبندی شدهاند که یکی از این مجموعههای آموزشی مختص زبان جاوا است. دورههای این مجموعه شامل آموزش جامع برنامه نویسی جاوا از سطوح مقدماتی تا پیشرفته، مباحث شیگرایی، پایگاه دادهها در جاوا، نحوه پیادهسازی انواع پروژهها در حوزههای مختلف و آموزشهای پروژه محور و تمرینی با جاوا هستند.
- برای دسترسی به صفحه مجموعه دورههای ویدیویی آموزش جاوا فرادرس + کلیک کنید.
فراخوانی متد در جاوا
اکنون که آشنایی لازم با سینتکس متد در جاوا بدست آمده است، میتوان در ادامه به نحوه استفاده از آن پرداخت.
فراخوانی متد کلاس در جاوا
در این بخش، متد از نوع دسترسی static تعریف شده است. از این رو، این متد را میتوان بدون ایجاد «وهلهای» (Instance) از کلاس فراخوانی کرد، بنابراین به طور مستقیم، یعنی به صورت DemoClass.sampleMethod(4,2) فراخوانی میشود. منظور از وهله در شیگرایی همان شی ساخته شده از کلاس است. در مثال زیر نحوه فراخوانی متد یک کلاس در جاوا نشان داده شده است.
1package com.softwaretestinghelp;
2
3public class DemoClass{
4
5 public static void sampleMethod(int a,int b) throws ArithmeticException{
6 System.out.println("Hello, this is sample method");
7 int c = a/b;
8 System.out.println("c:"+c);
9 }
10
11 public static void main (String[] args){
12 DemoClass.sampleMethod(4,2);
13 }
14
15}
خروجی برنامه به صورت زیر است:
Hello, this is sample method c:2
فراخوانی متد با استفاده از شی کلاس در جاوا
در این بخش، سطح دسترسی متد به صورت static تعریف نشده است. بنابراین، برای فراخوانی متد ابتدا یک وهله از کلاس (یا همان شی) ایجاد شده است و متد به وسیله آن شی ساخته شده یعنی به صورت یعنیnew DemoClass().sampleMethod(4,2) فراخوانی میشود.
1package com.softwaretestinghelp;
2
3public class DemoClass{
4
5 public void sampleMethod(int a,int b) throws ArithmeticException{
6 System.out.println("Hello, this is sample method");
7 int c = a/b;
8 System.out.println("c:"+c);
9 }
10
11 public static void main (String[] args){
12 new DemoClass().sampleMethod(4,2);
13 }
14
15}