در این آموزش قصد داریم تا به معرفی دستور return
در زبان برنامهنویسی جاوا و کاربرد آن در دستورات داخلی متدها پرداخته و در ادامه نحوۀ عملکرد متدهایی با مقادیر بازگشتی را تشریح نماییم. برای درک بهتر کاربرد دستور return
در مثال مطرحشده در آموزش پیشین، فرض میکنیم که قرار است تا مثلاً پس از خرید اقلام مورد نیاز خود از سوپرمارکت بلافاصله به خانه بازگردیم که پیادهسازی چنین شرایطی با دستور return
در زبان برنامهنویسی جاوا امکانپذیر میباشد.
در واقع، دستور return
در یک متد منجر بدین میشود تا متد مذکور پس از فراخوانی دیتایی را در خروجی بازگرداند که این دیتا را میتوان در سایر نقاط برنامه مورد استفاده قرار داد و این در حالی است که سایر متدهایی که در آنها دستور return
به کار گرفته نمیشود، صرفاً یکسری دستور را اجرا کرده و دیتایی را در خروجی ریترن نمیکنند.
در این مرحله به منظور درک کاربرد دستور return
در دستورات داخلی متدها، سناریوی جدیدی بدین صورت تعریف میکنیم و در آن فرض میکنیم که برای برنامهنویسی از یک کامپیوتر شخصی استفاده میکنیم اما قصد داریم تا یک لپتاپ برای خود تهیه نماییم تا همواره همراه ما باشد و بتوانیم در هر جایی به راحتی روی پروژههای خود کار کنیم اما از قیمت لپتاپهای متناسب با نیازمان اطلاعی نداریم و بدین دلیل نمیتوانیم هزینۀ خرید آن را از قبل تهیه کرده و همراه خود به مرکز خرید کامپیوتر ببریم. بنابراین به مرکز خرید رفته و جستجوی خود را آغاز مینماییم تا محدودۀ قیمت لپتاپی متناسب با نیازمان را به دست آورده و در نهایت هزینۀ مورد نیاز برای خرید لپتاپ را به عنوان مقدار حاصل از جستجوی خود تهیه نماییم که برای پیادهسازی چنین سناریویی، پروژهای جدید تحت عنوان BuyingALaptop ایجاد کرده و کلاسی به نام MainClass
در آن میسازیم و در ادامه کد مربوط به این کلاس را به صورت زیر تکمیل میکنیم:
public class MainClass {
public int goToComputerComplex() {
int laptopPrice = 0;
return laptopPrice;
}
}
در کد فوق، متدی از جنس int
تحت عنوان ()goToComputerComplex
با سطح دستری public
ایجاد کرده و داخل آن نیز با استفاده از دیتا تایپ int
متغیری به نام laptopPrice
با مقدار اولیۀ 0 تعریف میکنیم که این متغیر قرار است تا هزینۀ خرید لپتاپ را نگهداری نماید. از سوی دیگر، متغیر laptopPrice
یک متغیر به اصطلاح Local در متد فوق بوده و صرفاً در داخل متد مذکور میتوان بدان دسترسی داشت (در آموزش آشنایی با متغیرهای Local و Field در زبان برنامهنویسی جاوا به معرفی متغیرهای لوکال، نحوۀ تعریف و همچنین کاربرد آنها در متدها و کلاسهای تعریفشده در زبان جاوا پرداختهایم.) به علاوه، مشابه آنچه در آموزش آشنایی با انواع سطوح دسترسی در زبان برنامهنویسی جاوا آموختیم، سطح دسترسی public
در تعریف متد ()goToComputerComplex
بدین معنا است که متد مذکور از تمامی نقاط برنامه قابلدسترسی میباشد.
به طور کلی، چنانچه بخواهیم تا متدی تعریف کنیم که در صورت فراخوانی دادهای را به اصطلاح «ریترن کند» یا «بازگرداند»، میباید نوع دادۀ مربوط به مقدار بازگشتی را پیش از نام متد مورد نظر بنویسیم. به طور مثال، اگر بخواهیم که متدی پس از فراخوانی مقداری از جنس عدد اعشاری را ریترن کند، کلیدواژۀ double
را پیش از نام متد مینویسیم و یا به عنوان مثالی دیگر چنانچه بخواهیم تا مقدار بازگشتیِ متدی دادهای از جنس بولین (true
یا false
) باشد، میباید پیش از نام متد مربوطه کلیدواژۀ boolean
را بنویسیم. در این آموزش قصد داریم تا متد ()goToComputerComplex
مقدار مربوط به هزینۀ لپتاپ از نوع دادۀ int
یا عدد صحیح را در خروجی ریترن کند و از همین روی در تعریف متد مذکور به جای کیورد void
از کلیدواژۀ int
استفاده نمودهایم.
حال به منظور فراخوانی متد ()goToComputerComplex
نیاز داریم تا آبجکتی از روی کلاس مربوطه در کلاس دیگری ساخته و آن را روی آبجکت جدید ساختهشده فراخوانی نماییم که در همین راستا، مشابه آموزشهای پیشین، یک کلاس جدید تحت عنوان ActionClass
ایجاد کرده و جهت تعریف این کلاس به عنوان نقطۀ شروع برنامۀ خود نیز در حین ساخت آن تیک گزینۀ public static void main را میزنیم و در ابتدا کدی به صورت زیر خواهیم داشت:
public class ActionClass {
public static void main(String[] args) {
}
}
در ادامه، آبجکتی از روی کلاس MainClass
داخل کلاس ActionClass
ایجاد میکنیم و برای این منظور کد فوق را به صورت زیر تکمیل مینماییم:
public class ActionClass {
public static void main(String[] args) {
MainClass myObject = new MainClass();
}
}
مشابه آنچه در آموزش مقدمهای بر مفهوم شیئگرایی در زبان برنامهنویسی جاوا آموختیم، یک آبجکت جدید تحت عنوان myObject
از روی کلاس MainClass
ایجاد کرده و با این کار به متد تعریفشده در کلاس MainClass
دسترسی پیدا میکنیم. همانطور که پیشتر اشاره کردیم، متد ()goToComputerComplex
دادهای از جنس عدد صحیح را ریترن میکند. بنابراین با استفاده از دیتا تایپ int
متغیری به نام totalPrice
تعریف کرده و نتیجۀ حاصل از فراخوانی متد ()goToComputerComplex
روی آبجکت جدید ساختهشده از روی MainClass
را بدان منتسب میکنیم و بدین ترتیب دیتای ریترنشده از فراخوانی این متد در متغیر totalPrice
ذخیره میشود به طوری که خواهیم داشت:
public class ActionClass {
public static void main(String[] args) {
MainClass myObject = new MainClass();
int totalPrice = myObject.goToComputerComplex();
}
}
با اجرای برنامۀ فوق، متد ()goToComputerComplex
فراخوانی شده و مقدار منتسب به متغیر laptopPrice
از کلاس MainClass
در خروجی ریترن شده و به متغیر totalPrice
از کلاس ActionClass
اختصاص داده میشود که در این مرحله برای مشاهدۀ مقدار منتسب به متغیر totalPrice
از متد ()println
استفاده کرده و آن را به همراه استرینگی به صورت زیر در کنسول چاپ مینماییم:
public class ActionClass {
public static void main(String[] args) {
MainClass myObject = new MainClass();
int totalPrice = myObject.goToComputerComplex();
System.out.println("The price of my laptop is: " + totalPrice);
}
}
در کد فوق، در دستور سطر پنجم گفتهایم مقدار اختصاصیافته به متغیر totalPrice
با استفاده از عملگر +
با استرینگ «:The price of my laptop is» کانکت شده و در کنسول چاپ گردد. بنابراین با اجرای برنامۀ فوق در خروجی خواهیم داشت:
The price of my laptop is: 0
همانطور که مشاهده میکنیم، برنامه به درستی کار کرده و تنها مقدار اختصاصیافته به متغیر laptopPrice
معادل عدد 0 که با فراخوانی متد ()goToComputerComplex
در خروجی ریترن شده و به متغیر totalPrice
منتسب میشود را به همراه استرینگ مربوطه در کنسول چاپ مینماید. در ادامه، مقدار عددیِ منتسب به متغیر laptopPrice
در کلاس MainClass
را به عدد 28000000 تغییر میدهیم به طوری که در کد زیر داریم:
public class MainClass {
public int goToComputerComplex() {
int laptopPrice = 28000000;
return laptopPrice;
}
}
حال مجدداً برنامه را اجرا میکنیم و بدین ترتیب در خروجی خواهیم داشت:
The price of my laptop is: 28000000
همانطور که ملاحظه میکنیم، به محض تغییر مقدار اختصاصیافته به متغیر laptopPrice
مقدار ریترنشده از متد ()goToComputerComplex
نیز تغییر پیدا میکند.