سلام به همه دوستان و علاقه مندان به آموزش جاوا در وب سایت ITSI.IR . در این درس می خواهیم شما را با مفهوم سازنده ها در جاوا آشنا کنیم . با ما همراه باشید .
در ابتدا این آموزش یک توضیح کوتاه در مورد نوع های عادی و مراجعه ای در جاوا به شما ارائه می دهم .

در جاوا ما با دو نوع داده سروکار داریم . نوع های اصلی ما که شامل float , long , int , short , char , byte , boolean double می شوند و دیگر نوع داده ای که غیر اصلی باشند را نوع های مراجعه ای مینامیم .
مثلا کلاس ها که یک شی را ایجاد میکنند از نوع مراجعه ای می باشند .
یک متغیر اگر از نوع اصلی باشد می تواند در هربار اجرا یک مقدار را بسته به نوع تعریف شده آن در خود نگهداری کند .
مثلا یک متغیر از نوع int یک مقدار صحیح ( عدد 9 ) را نگهداری میکند . اگر ما یک مقدار دیگر را به این متغیر بدهیم با مقدار اولیه آن جایگزین می شود . این متغیر ها که از نوع اصلی هستند در هنگام تعریف شدن یک مقدار پیشفرض را در خود نگهداری میکنند .

مثلا متغیر های float , long , int , short , char , byte, double با مقدار صفر مقدار دهی اولیه میشوند ، متغیر از نوع boolean با false مقدار دهی می شوند .
شما میتوانید در هنگام تعریف متغیر یک مقدار برای آن تعیین کنید . لازم به ذکر است اگر متغیر بصورت محلی باشد مقدار دهی اولیه نمیشود .
متغیر ها از نوع مراجعه ای می توانند آدرس شی ها را ذخیره کنند . شی های مورد مراجعه می توانند حاوی متغیرهای نمونه و متدهای متعددی باشند .

Scanner myInput = new Scanner(System.in);

این دستور یک شی از نوع کلاس Scanner ایجاد میکند یعنی یک مراجعه به شی را ذخیره میکند .

MyClass classRoom = new MyClass();

این خط کد که در درس قبلی ، ما استفاده کردیم یک شی از کلاس MyClass ایجاد و به متغیر classRoom یک مراجعه به شی MyClass تخصیص می دهد .

اگر یک متغیر نمونه مقدار دهی اولیه نشود با null مقدار دهی میشود
.
اگر بخواهیم متدهای یک شی را استفاده کنیم باید یک مراجعه به شی را ایجاد کرده باشیم .

خب اینم یک توضیح کوتاه برای انواع نوع داده ای در جاوا .

به سراغ آموزش این درس می رویم و با ذکر یک مثال می خواهیم شما را با سازنده ها آشنا کنم .
اگر بخاطر داشته باشید در درس قبل وقتی ما برای اولین بار از شی کلاس MyClass استفاده کردیم مقدار متغیر نمونه name برابر با null بود . اگر بخواهیم وقتی یک شی ایجاد میشود مقدار دهی اولیه شود باید از سازنده ها استفاده کنیم .
هر کلاس که در جاوا اعلان میشود می تواند یک سازنده ( Constructor )داشته باشد که به وسیله آن متغیر های نمونه را مقدار دهی اولیه میکند .
وقتی ما با استفاده از new یک شی جدید را ایجاد می کنیم سازنده به صورت پیشفرض فراخوانی میشود .
همانند درس قبل NetBeans را باز کنید و یک پروژه جاوا با نام MyClassTest ایجاد کنید .
یک کلاس جدید با نام MyClass را همانند آنچه در درس قبل گفته شد ایجاد کنید و کد های زیرا در آن وارد کنید تا توضیحات را برای شما ارائه بدهم .

package myclasstest;

public class MyClass {
    
    private String name ; 
    
    public MyClass(String name){
        this.name = name ;
    }
    
    public void setName(String name){
        this.name = name;
    }
    
    public String getName(){
        return name ;
    }
    
}

حالا در کلاس اصلی هم کد زیر را وارد کنید .

package myclasstest;
import java.util.Scanner;

public class MyClassTest {


    public static void main(String[] args) {
        
        Scanner myInput = new Scanner(System.in);
        
        MyClass classRoom1 = new MyClass("Mohamad Saifoori");
        MyClass classRoom2 = new MyClass("Mohsen Rad");
        
        
       System.out.printf("ClassRoom1 Name Is : %s\n", classRoom1.getName());
       System.out.printf("ClassRoom2 Name Is : %s\n", classRoom2.getName());
    }
    
}

اگر برنامه را اجرا کنید خروجی زیر را خواهید دید

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

خروجی برنامه

دوستان گرامی همانند گذشته ما توضیحات موارد جدید را ارائه میدهیم یا آموزش ها زیاد طولانی نشوند .

public MyClass(String name){
this.name = name ;
}

قطعه کد بالا یک سازنده برای کلاس MyClass ایجاد میکند . سازنده باید با نام کلاس یکی باشد . در پرانتر جلوی نام سازنده یک لیست پارامتری وجودا دارد ، زمانیکه شما یک شی از کلاس ایجاد میکنید آرگومان مربوط به آن را بر اساس نوع ( String در این مثال ) را باید به آن ارسال کنید . مثلا خط اول این قطعه کد می گوید که سازنده کلاس MyClass یک پارامتر از نوع String با نام name دارد که با استفاده از this.name=name مقداری را که به آن ارسال می شود در متغیر نمونه ما ذخیره میکند .
مابقی دستورات کلاس MyClass همانند درس قبل میباشد و نیاز به توضیح بیشتر نیست .
به سراغ کلاس اصلی میرویم

MyClass classRoom1 = new MyClass("Mohamad Saifoori");
MyClass classRoom2 = new MyClass("Mohsen Rad");

این دو خط از برنامه که شبیه هم هستند ، دو شی از کلاس MyClass ایجاد میکنند و با استفاده از پارامتر سازنده تعریف شده در کلاس MyClass شروع به مقدار دهی اولیه دو متغیر classRoom1 و classRoom2 می کند .

دقت کنید که هر شی از کلاس MyClass که ایجاد کنید کپی متعلق به خود را در اختیار دارد . به همین دلیل هر دو شی ایجاد شده به صورت مجزا متغیر نمونه مارا مقدار دهی اولیه می کنند و با استفاده از متد getName که در درس قبل توضیح داده شد به این مقدار دسترسی دارند و آن را چاپ میکنند .
 سازنده ها مقداری با برگشت نمیدهند و این یکی از تفاوت های بین متد ها و سازنده ها در کلاس میباشد . برای همین ما در سازنده ها نوع داده بازگشتی مثلا void و … قرار نمیدهیم .

معمولا سازنده ها را بصورت public تعریف میکنیم .

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

این آموزش هم به پایان رسید . امیدوارم آموزش ها را با تمرین چندین بار مطالعه کنید . فایل برنامه هم برای شما قرار داده شد . موفق و پیروز باشید .

دانلود فایل آموزش