یک کانستراکتور در زبان برنامه نویسی جاوا چیست؟

کانستراکتور جاوا یکی از بهترین کامپوننت های جاوا می باشد، در این مطلب قصد داریم کمی بیشتر درباره کانستراکتور جاوا صحبت کنیم و اطلاعاتی به شما ارائه دهیم.

 یک کانستراکتور در زبان برنامه نویسی جاوا چیست؟

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

یک پاسخ مقدماتی درباره کانستراکتور جاوا

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

 کانستراکتور جاوا


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

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

فرض کنید که شما یک اپلیکیشن ساده تاس را در زبان برنامه نویسی جاوا ایجاد کرده اید که قصد دارید با استفاده از آن یک عدد تصادفی ایجاد کنید. در ابتدا شما ممکن است کلاس تاس خود را با هدف نمایش یک تاس فیزیکی ایجاد کرده باشید، با رعایت برخی از نکات ممکن است شما نیاز داشته باشید که 20 وجه را به این تاس خود اضافه کنید. در این کد ساده متغیر dice شما که از نوع int می باشد برابر عدد 20 است و نشان دهنده بیشترین احتمال یک حالت است( توجه داشته باشید که یک تاس 20 طرفه نمی تواند بیش از 20 حالت باشد). متغیر حالت که آن را با roll نمایش می دهیم در واقع نگهدارنده عدد تصادفی می باشد که در آینده تولید خواهیم کرد.

 کانستراکتور جاوا


کدهای مربوط به توضیحات بالا

import java.util.Random;


public class Dice Roller {

 private int dice = 20;

 private int roll;

 private Random rand = new Random();

حال شما نیاز دارید که یک تابع در کلاس Dice Roller  خود بسازید و در آن گام هایی که کامپیوتر نیاز دارد تا یک تاس را در دنیای واقعی شبیه سازی کند را ایجاد کنید: یک عدد صحیح را با استفاده از rand() ایجاد کنید و آن را در متغیر roll قرار دهید، به این متغیر عدد یک را اضافه کنید چرا که جاوا به صورت پیشفرض شمارش را از 0 آغاز می کند، حال تنها کافی است که عدد تولید شده را چاپ کنید.

public void Roller() {

       roll = rand.nextInt(dice);

       roll += 1;

       System.out.println (roll);

}

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

// main loop

public static void main (String[] args) {

        System.out.printf("You rolled a ");


        Dice Roller App = new Dice Roller();

        App.Roller();

}

}

 کانستراکتور جاوا

اجرای قطعه کد بالا

تا زمانی که شما یک محیط توسعه برنامه به زبان برنامه نویسی جاوا داشته باشید می توانید کدهای خود را به راحتی از طریق ترمینال اجرا کنید.

$ java dice.java

  You rolled a 12

توجه داشته باشید که در این مثال هیچ گونه کانستراکتور جاوایی وجود ندارد و این یک برنامه کاملا صحیح در جاوا می باشد اما این برنامه کاملا محدود می باشد، برای مثال اگر شما نیاز داشته باشید که این تاس خود را در بازی های محبوب مورد استفاده قرار دهید نیاز دارید که یک تاس 6 طرفه را ایجاد کنید، در این مثال ساده تغییر کد خیلی سخت نخواهد بود اما اگر یک کد پیچیده داشته باشید می توانید متوجه شوید که این کار به هیچ وجه منطقی نیست، یکی از بهترین راه حل ها برای حل این مشکل استفاده از کانستراکتور جاوا می باشد.

 کانستراکتور جاوا


استفاده از کانستراکتور جاوا در عمل

کلاس Dice Roller در این پروژه نمونه یک سازنده تاس را به نمایش می گذارد، زمانی که شما آن را فراخوانی می کنید این برنامه یک تاس مجازی برای شما ایجاد می کند و سپس آن را در متغیر roll قرار می دهد. حال شما می توانید با ساختن یک کانستراکتور جاوا به صورت سفارشی تعیین کنید که از کدام یک از انواع تاس ها می خواهید استفاده کنید. بیشتر قسمت های کد شما ثابت است به استثنای یک کانستراکتور جاوا یک عدد را از کاربر دریافت خواهد کرد.

import java.util.Random;


public class Dice Roller {

       private int dice;

       private int roll;

       private Random rand = new Random();


 // constructor

 public Dice Roller(int sides) {

       dice = sides;

 }

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

public void Roller() {

       roll = rand.nextInt(dice);

       roll += 1;

       System.out.println (roll);

}

قسمت اصلی برنامه شما هر آرگومانی که شما در ابتدای کد خود وارد کرده باشید را برای شما در حین اجرا فراهم می کند. اگر این یک برنامه پیچیده بود شما می توانستید به خوبی آن را تجزیه و تحلیل کنید و معایب استفاده نکردن از کانستراکتور جاوا را به خوبی متوجه شوید. در این مثال شما تنها کاری که باید انجام دهید این است که ورودی String خود را به int تغییر دهید:

public static void main (String[] args) {

        System.out.printf("You rolled a ");

        Dice Roller App = new Dice Roller( Integer.parseInt(args[0]) );

        App.Roller();

}

}

حال می توانید برنامه را اجرا کنید و تعداد وجه هایی که می خواهید تاس شما داشته باشد را وارد کنید:

$ java dice.java 20

    You rolled a 10

   $ java dice.java 6

    You rolled a 2

    $ java dice.java 100

    You rolled a 44

کانستراکتور جاوا ورودی شما را پذیرفته است بنابراین زمانی که یک شی از کلاس شما ساخته می شود یک تاس با تعداد وجه هایی که کاربر وارد کرده است می اندازد و عدد تصادفی مورد نظر را به شما باز می گرداند.

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

 کانستراکتور جاوا