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


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

public class HelloWorld {    
    public static void main(String[] args) {        
        String text = "In the name of God";
        System.out.println(text);    
    }
}

کد فوق، مربوط به اولین پروژۀ جاوایی است که در آموزش‌های گذشته آن را پیاده سازی کردیم و در تفسیر آن باید گفت که در سطر اول با به‌کارگیری کیورد class کلاسی به نام HelloWorld نوشته‌ایم که در آن هر یک از علائم { } پس از نام کلاس و در انتهای سطر ششم تشکیل‌دهندۀ یک بلوک هستند و کل برنامۀ فوق را شامل می‌شوند و در سطر دوم متدی به نام ()main تعریف کرده‌ایم که در آموزش‌های آتی به تشریح هر یک از کیوردهای مربوط نحوۀ تعریف این متد خواهیم پرداخت. 

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

اما در ارتباط با نحوۀ عملکرد متد ()main باید گفت که با تعریف این متد، به کامپایلر جاوا دستور داده می‌شود که نقطۀ آغازین برنامه از سطر مربوط به تعریف این متد بوده و در حین اجرا نیز سیستم به صورت خودکار برنامه نوشته‌شده را از متد ()main به بعد اجرا می‌نماید. در خطوط سوم و چهارم یکسری دستورات مبنی بر چاپ استرینگ «In the name of God» در کنسول را نوشته‌ایم که در ادامه هر یک از این دستورات را مورد بررسی قرار می‌دهیم.

در متد ()main ابتدا یک آبجکت از نوع استرینگ متعلق به کلاس String تحت عنوان text ساخته‌ایم و استرینگ «In the name of God» را بدان منتسب کرده‌ایم که در این دستور کیورد String یک به اصطلاح API Identifier است و واژۀ text نیز یک Identifier می‌باشد (جهت کسب اطلاعات بیشتر در رابطه با هر یک از این مفاهیم به آموزش آشنایی با مفهوم کلیدواژه در زبان برنامه‌نویسی جاوا مراجعه نمایید.) دستور سطر چهارم نیز متشکل از سه کیورد out ،println و System می‌باشد که همگی یکسری API Identifier در زبان برنامه‌نویسی جاوا می‌باشند که این وظیفه را دارند تا متغیر text از نوع استرینگ را در کنسول چاپ کنند.

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

آشنایی با تفاوت‌های مابین متد و فانکشن

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

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


لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
کاربر میهمان
علیمن یک کاربر مهمان هستم
۱۳۹۸/۰۵/۰۹
فرمودید سطح دسترسی کلاس درصورتیکه نوشته نشود (public) از سطح دسترسی package ای که در آن قراردارد تبعیت می‌کند. نوشتن package در فایل هم اختیاری است. حالا اگه package ننویسیم و access modifire هم برای کلاس (public) مشخص نکنیم، سطح دسترسی کلاس برای سایر کلاس‌ها به چه صورت خواهد بود؟
کاربر میهمان
sina malekiمن یک کاربر مهمان هستم
۱۳۹۶/۰۴/۱۳
واقع دمتون گم انشالله سلامت باشید با این سایت خوبتون هر چقدر تشکر کنم بازم کمه بازم میگم دمتون گم
کاربر میهمان
Appمن یک کاربر مهمان هستم
۱۳۹۶/۰۳/۲۲
ممنون بابت سایت عالیتون
ی سوال داشتم, ورودی متد چی میتونه باشه؟ مثلا ورودی میتونه کلاس یا متغیر و .... باشه؟
کاربر میهمان
Mehdiمن یک کاربر مهمان هستم
۱۳۹۵/۰۴/۱۵
سایتتون فوق العاده یا بهتره بگم بی نظیره.
Nirvana
Nirvana
۱۳۹۵/۰۳/۱۶
سلام.آیا هر کلاسی که ایجاد میکنیم باید با دستور public static void main(String[] args) شروع شود؟ اگه باید اینطوری باشه اونوقت دوتا نقطه شروع خواهیم داشت. اونوقت تکلیف چیه و برنامه از کجا شروع میشه؟ و اگه نباید اینطوری باشه, پس چرا وقتی دوتا کلاس ایجاد کردم و هردوتا با دستور public static void main(String[] args) شروع میشدند, با هیچ پیغام خطایی مواجه نشدم؟ممنون
hamid_r_9750
hamid_r_9750
۱۳۹۵/۰۲/۱۸
بسیار ممنونم.عالیه
کاربر میهمان
mahdiمن یک کاربر مهمان هستم
۱۳۹۵/۰۲/۰۸
متد فرقش با function زبان جاوا اسکریپت چیه؟
کاربر میهمان
محمد حسین من یک کاربر مهمان هستم
۱۳۹۴/۱۱/۱۰
سلام و خسته نباشید
واقعا سایت خوبیه از نظر محتوا و سایر چیز ها.
من که لذت بردم برای شروع کارم با جاوا واقعا اطلاعاتتون کار امده
همچنین سایر اموزش هاتون که راجب PHP و جاوا اسکریپت هست کار شدس
دربین سایت های دیگه
اغلب سایت ها در زمینه ی وب معمولا از روش کپی استفاده میکنن از منبعی که همه ی وب کارا میدونن
ولی شما متفاوت بودین
خسته نباشید واقعا
کاربر میهمان
کیوانمن یک کاربر مهمان هستم
۱۳۹۴/۱۰/۲۰
عالی عالی
امیر حسین حسین زاده
امیر حسین حسین زاده
۱۳۹۴/۱۰/۰۹
سپاس فراوان